Получите доступ к общему сетевому ресурсу из приложения asp.net.Работает в Visual Studio, но не в IIS, почему?
-
27-10-2019 - |
Вопрос
У меня есть общий сетевой ресурс в интрасети, который предоставляет доступ на запись всем (гостевым) пользователям
Итак, я написал программу (модуль mojoportal, во всяком случае, я думаю, это то же самое) на c #, которая записывает некоторые файлы по этому пути, и в Visual Studio отлично работает.
Теперь, используя ту же программу в IIS 7.5, не работает, я получаю это исключение:
Исключение System.Net.WebException:Исключение произошло во время запроса WebClient.---> Исключение System.IO.IOException - Ошибка входа в систему:неизвестное имя пользователя или неверный пароль.
Что ж...поскольку доступ к общему ресурсу smb предоставляется всем, я не понимаю, почему это не работает в IIS...
Код заключается в следующем:
WebClient wc = new WebClient();
wc.DownloadFile(urltodownload, smbshare);
Что это может быть?Спасибо
Решение
Вашей службе IIS по умолчанию не предоставлен доступ к общему файловому ресурсу.Вы могли бы попробовать запустить свой сайт с идентификатором пула приложений, установленным в Локальная система, или вручную управляйте идентификатором, под которым выполняется код, из web.config:
<system.web>
<identity impersonate="true" userName="user with correct rights or admin" password="password"/>
...
Другие советы
Вы пробовали установить учетные данные?
Я полагаю, что всеми группе все еще требуются какие -то достоверные учетные данные, не устанавливая учетные данные, которые вы анонимны ...
wc.Credentials = CredentialCache.DefaultCredentials;
Похоже, что это не проблема с доступом к SMB Share, это проблема с доступом к веб -сайту, хранящемуся в urltodownload
. Анкет Как сказал Ричард, вы можете использовать учетные данные по умолчанию, т.е. wc.UseDefaultCredentials = true;
или какой -то конкретный набор учетных данных или настройка веб -сайта на urltodownload
Принять анонимные соединения.
Обратитесь к тому, что может вызвать WebException
для DownloadFile
метод @ Msdn.
Вам нужны какие -то учетные данные, чтобы использовать акцию от ASP.NET. Вы можете настроить подражание на web.config или установить Wc.credentials с использованием сетевых учетных данных. В web.config вы установите Follwoing в разделе System.Web:
<identity impersonate="true" userName="username_here" password="password_here" />
Для моего приложения Visual Studio (Winforms) это был простой акт создания сильного именного ключа (SNK) для использования приложения.
Я не уверен, почему.
Возможно, создание SNK в Visual Studio имеет способ установить эти учетные данные, на которые ссылаются другие авторы выше меня.
Надеюсь это поможет.