У меня очень простой сайт только со статическими файлами в 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