Назад | Перейти на главную страницу

500 Ошибка при использовании настраиваемой учетной записи для пула приложений в IIS 7

У меня очень простой сайт только со статическими файлами в IIS 7 на Windows Server 2008 SP2.

Когда я пытаюсь получить доступ к любому статическому файлу, я получаю ошибку 500. Если я переименую html-файл в расширение aspx, он будет работать нормально.

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

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

При включении трассировки появляется следующее сообщение об ошибке:
ModuleName: IIS Web Core
Уведомление: 2
HttpStatus: 500
HttpReason: внутренняя ошибка сервера
HttpSubStatus: 0
Код ошибки: 2147943746
ConfigExceptionInfo
Уведомление: AUTHENTICATE_REQUEST
ErrorCode: либо не был указан требуемый уровень олицетворения, либо предоставленный уровень олицетворения недействителен. (0x80070542)

Мне не удалось погуглить код ошибки.

Решенная проблема: группа IIS_IUSRS отсутствовала в «олицетворении клиента после аутентификации» в локальной политике безопасности.

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

чтобы предоставить разрешения для определенного пула, просто предоставьте разрешения для пользователя «IIS APPPOOL \ YOUR_POOL_NAME»

В дополнение к ответу Брауни (это правильно, вы должны предоставить это право учетной записи пула приложений); если IIS отправляет вам эту ошибку, когда вы вызываете ее с помощью клиента WCF (+ Windows-проверка подлинности включена в IIS), это может быть связано с тем, что флаги токена NTLM, предоставленные IIS, не позволяют ему олицетворять вызывающего.

Измените конфигурацию вашего клиента из этого (по умолчанию):

<behavior name="NewBehavior">
  <clientCredentials>
    <windows allowedImpersonationLevel="Identification" />
  </clientCredentials>
</behavior>

К этому:

<behavior name="NewBehavior">
  <clientCredentials>
    <windows allowedImpersonationLevel="Impersonation" />
  </clientCredentials>
</behavior>

Подробности читайте в этой статье: Олицетворение и делегирование в WCF