Проблема ввода-вывода в C # 3.5 ASP.net, UnauthorizedAccessException для файла в сетевой папке - PullRequest
2 голосов
/ 05 мая 2009

Я получаю исключение UnauthorizedAccessException каждый раз, когда пытаюсь получить доступ (просто read ) к файлу на сетевом ресурсе "\\ server \ folder1 \ folder2 \ file.pdf."

Я выдаю себя за пользователя домена \ aspnet, который имеет права на чтение и запись в вышеупомянутых папках. Файл не только для чтения.

Я попытался найти разрешения через System.Security.Permissions.FileIOPermission. Это просто говорит NoAccess для всех файлов.

Я не уверен, что еще я могу сделать.

Я использую Visual Studio 2008, ASP.net 2.0 на платформе 3.5, WinXP, IIS 5.1.

Ответы [ 5 ]

3 голосов
/ 05 мая 2009

Пользователь ASP.NET не будет работать с сетевым путем. Так что вам нужно иметь учетную запись Windows, которая будет иметь все права, а затем вам нужно наложить вещи в web.config, как показано ниже.

<identity impersonate="true" userName="domainname\windowuseraccount" password="password"/>
3 голосов
/ 05 мая 2009

Полагаю, вы правильно настроили олицетворение. Вы отключили анонимный доступ, установили режим проверки подлинности Windows и установите для олицетворения значение true и т. Д.

Даже при том, что все сделано правильно и подражает правильная учетная запись, вы все равно не сможете получить доступ к файлу. Олицетворенная учетная запись использует так называемые сетевые учетные данные. Они действительны только на машине, на которой выполняется олицетворение. Когда вы пытаетесь получить доступ к файлу на самом компьютере, доступ осуществляется с учетными данными пользователя, но для файла на общем ресурсе доступ осуществляется как пользователь, не прошедший проверку подлинности, и поэтому доступ к нему не разрешен.

Чтобы разрешить вам использовать учетные данные пользователя для удаленной работы, то есть для доступа к общему ресурсу, встроенной безопасности для удаленной базы данных и т. Д., Вам нужно использовать делегирование, а не олицетворение. Это довольно сложная тема, связанная с настройкой Active Directory и настройкой IIS. Взгляните на эту статью , она должна дать вам хорошее место для начала.

0 голосов
/ 05 мая 2009

К вашему сведению, вы можете поместить в файл aspx следующее, чтобы проверить, как идентифицируются ваши страницы:

<%@ Page Language="C#" %>
<% Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name); %>

Для доступа к сетевому ресурсу указанному выше пользователю потребуется настройка учетной записи домена администратором сети.

0 голосов
/ 05 мая 2009

Какую версию IIS вы используете? Если это версия 6, вы можете поместить веб-приложение в его собственный пул приложений, а затем установить идентификатор этого пула приложений как учетную запись пользователя домена. Затем предоставьте этой учетной записи пользователя домена доступ к общей сетевой папке.

0 голосов
/ 05 мая 2009

Убедитесь, что у пользователя домена есть права безопасности и Права на общий доступ. То есть в общей папке добавьте пользователя домена на вкладке «Общий доступ» в свойствах, а также на вкладке «Безопасность».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...