2013-03-06 3 views
0

Я пытаюсь получить доступ к файлам из общей папки (место ftp) в приложении Asp.net. Он отлично работает с визуальной студией. Когда я развертываю то же самое в IIS 7, я получаю следующую ошибку:Невозможно прочитать файлы из общей папки

«Ошибка входа в систему: пользователю не был предоставлен запрашиваемый тип входа на этом компьютере».

Трассировка стека:

[IOException: Ошибка входа в систему: пользователь не был предоставлен требуемый тип входа в систему на данном компьютере. ]
System.IO .__ Error.WinIOError (Int32 ERRORCODE, Строка maybeFullPath) +9723522 System.IO.FileSystemEnumerableIterator 1.CommonInit() +245 System.IO.FileSystemEnumerableIterator 1..ctor (Строка пути, Строка originalUserPath, Строка searchPattern, SearchOption searchOption, SearchResultHandler`1 ResultHandler) +556
System.IO.DirectoryInfo.InternalGetFiles (Строка searchPattern, SearchOption searchOption) +64 System.IO.DirectoryInfo.GetFiles() +14

......

Мой пул приложений работает в режиме NETWORKSERVICE Кому пользователю IIS необходимо предоставить разрешение на доступ к этой папке? это IUSER или NT AUTHORITY \ NETWORK SERVICE? Как я могу определить текущего пользователя в IIS?

ответ

0

Возможно, вы пытаетесь войти в систему интерактивно на компьютер, к которому вы можете получить доступ только через сеть, или наоборот.

Изменение местоположения вашего входа. Попробуйте войти в систему локально (в интерактивном режиме) или удаленно (по сети), если это необходимо. Вы можете попросить человека, который администрирует компьютерную безопасность, изменить базу данных безопасности, чтобы вы могли входить в систему локально или удаленно.

2

Причина отказа в связи с этим, скорее всего, групповая политика, запрещающая доступ к этой службе пользователем, выполняющим службу IIS.

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

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

Я бы сказал, что это был бы более безопасный подход.

+0

Один из способов использования другой учетной записи, если API не позволяет прямо ее использовать, заключается в использовании олицетворения – fredrik

+0

Как только мы разрешим разрешение пользователю, работающему с IIS 7, оно решит эту проблему правильно? – JIJIL

+0

Он должен - если в каких-либо окнах или IIS нет встроенных контрмер. Но если это альтернатива, это не помешает попробовать. – fredrik

0

Отладка - посмотрите на Environment.UserName на момент исключения. Это будет либо пользователь, инициировавший запрос, либо анонимный пользователь.

Чтобы исправить: если локальные файлы - разрешения разрешений могут быть в порядке. Если удаленный доступ и использование пользовательской учетной записи пользователя - нужно олицетворять другую учетную запись, которая имеет разрешения на удаленном компьютере, поскольку вы не можете использовать уже выдающую себя учетную запись для доступа к удаленному ресурсу («NTLM one hop»).

Примечание: при разрешении доступа к файлам обязательно проверяйте требования безопасности.

+0

Я получаю IUSR как Environment.UserName. Итак, вы говорите, что для удаленного общего доступа я не могу получить доступ, включив разрешение на чтение/запись, вместо этого мне нужно пойти с олицетворением пользователя, который имеет право доступа к этой папке? Тогда как он работает с визуальной студией? – JIJIL

+0

Локальная учетная запись (которая, как я полагаю, IUSR) не может получить доступ к удаленному ресурсу (удаленный ресурс увидит учетную запись компьютера), так что да - вам нужно выдавать себя за другого пользователя, действительного как минимум для удаленного местоположения. VS использует локальный веб-сервер, который работает под вашей учетной записью. –

Смежные вопросы