В списке каталогов отказано с пользовательским идентификатором пула приложений

У меня есть приложение ASP.Net MVC3, которое нормально работает в пуле приложений по умолчанию на моем сервере IIS 6.

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

Я установил пользовательское удостоверение для пула приложений, и приложение теперь просто выдает мне ошибку "Запрещено перечисление каталогов".

Я попытался переключить удостоверение обратно на сетевую службу, и приложение снова начало работать.

Что может помешать запуску приложения с пользовательской идентификацией? Как будто ASP.Net даже не запускается.

Я бегал aspnet_regiis -ga <domain\username> и добавил учетную запись в группу IIS_WPG, чтобы учетная запись удостоверения имела доступ к ASP.Net.

Больше информации

Я провел некоторую диагностику с помощью Process Monitor, и он показывает, что aspnet_isapi.dll не загружается с пользовательским удостоверением.

Когда удостоверение "Сетевая служба", я вижу, как загружается aspnet_isapi.dll, за которым следует webengine4.dll. Это происходит сразу после аутентификации NTLM.

С пользовательским удостоверением происходит аутентификация NTLM, а затем процесс w3wp просто начинает поиск файлов по умолчанию (Default.aspx, Default.htm и т. Д.).

Я проверил, и у учетной записи есть доступ к папке версии фреймворка, где хранятся эти библиотеки DLL.

5 ответов

Решение

Оказывается, мне нужно было сопоставить шаблон с aspnet.isapi.dll, хотя я не уверен, почему.

Без пользовательских идентификаторов приложение работает без подстановочных знаков. С индивидуальной идентификацией мне нужно отображение. На другом сервере пользовательские идентификационные данные работают нормально без сопоставления. Weird.

Вам нужно дать пользователю, который вы указали в пользовательском идентификаторе, явное чтение или чтение / запись на уровне папки вашего приложения. Щелкните правой кнопкой мыши на содержащей папке, затем "Свойства" и добавьте пользователя с разрешениями, требуемыми приложением, на вкладку безопасности.

Вы уже проверили настройки просмотра каталогов?

http://www.iis.net/configreference/system.webserver/directorybrowse

Теперь, когда вы используете другого пользователя, отличного от пользователя по умолчанию, убедитесь, что вы установили анонимную аутентификацию для использования пользователя пула приложений. Также может быть что-то, что связано с тем, что упоминал @Gabe Thorns, это может быть проблема с отображениями подстановочных знаков. Если у вас не установлены сопоставления с подстановочными знаками для запуска процесса asp, он попытается найти файлы, избегая процессоров asp.

Надеюсь, это поможет.

Вы явно предоставили разрешения для удостоверения пула приложений в папке приложения?

Учетная запись должна быть что-то вроде IIS AppPool\MyAppPoolName

Более подробную информацию об этом можно найти здесь: http://www.iis.net/learn/manage/configuring-security/application-pool-identities

Другие вопросы по тегам