#c_sharp #windows #aspnet_mvc #iis
Пишу маленький проект с подключением файла с сетевого диска, при публикации на локальном ПК получаю исключение System.IO.DirectoryNotFoundException: Не удалось найти часть пути затем я решил в поле пути прописать явное подключение string path = "\\\\192.168.0.2\\delete\\test.dat и снова получаю исключение: System.UnauthorizedAccessException: Отказано в доступе по пути \192.168.0.2\delete\test.dat И как бы ясно что система требует логин пароль, я на MSDN нашел вот такой пример: в web.config добавляем :И всеравно получаю ошибку, в которой сказано что такого пользователя и пароля не существует в системе, помогите пожалуйста решить проблему. Спасибо
Ответы
Ответ 1
Источник: en SO: How to provide user name and password when connecting to a network share Попробуйте так, у меня работает NetworkManager public class NetworkManager : IDisposable { private readonly string _networkName; public NetworkManager(string networkName) { _networkName = networkName; NetResource netResource = new NetResource { Scope = ResourceScope.GlobalNetwork, ResourceType = ResourceType.Any, DisplayType = ResourceDisplayType.Directory, RemoteName = networkName }; int result = WNetAddConnection2(netResource, "ВАШ ПАРОЛЬ", "ВАШ ЛОГИН", 0); if (result != 0) { throw new Win32Exception(result); } } ~NetworkManager() { Dispose(false); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { WNetCancelConnection2(_networkName, 0, true); } [DllImport("mpr.dll")] private static extern int WNetAddConnection2(NetResource netResource, string password, string username, int flags); [DllImport("mpr.dll")] private static extern int WNetCancelConnection2(string name, int flags, bool force); } [StructLayout(LayoutKind.Sequential)] public class NetResource { public ResourceScope Scope; public ResourceType ResourceType; public ResourceDisplayType DisplayType; public int Usage; public string LocalName; public string RemoteName; public string Comment; public string Provider; } public enum ResourceScope { Connected = 1, GlobalNetwork, Remembered, Recent, Context } public enum ResourceType { Any = 0, Disk = 1, Print = 2, Reserved = 8, } public enum ResourceDisplayType { Generic = 0x0, Domain = 0x01, Server = 0x02, Share = 0x03, File = 0x04, Group = 0x05, Network = 0x06, Root = 0x07, Shareadmin = 0x08, Directory = 0x09, Tree = 0x0a, Ndscontainer = 0x0b } Использование using (NetworkManager network = new NetworkManager(@"\\192.168.0.2")) { // ваш код с подключением }
Комментариев нет:
Отправить комментарий