Мы пытаемся использовать обычную аутентификацию в проекте, который обычно отлично работает в нашей среде интеграции и контроля качества или даже работает локально с IIS 7.5. Но при локальном запуске в IIS Express возникают очень странные проблемы: любые статические запросы приводят к загадочным ошибкам HTTP 500, говорящим нам об ошибке при доступе к этому ресурсу, возможно, по ряду причин, связанных с разрешениями, с кодом ошибки 0x80070542. В то же время все, что отображается в ASP.NET, получается идеальным.
Беглый поиск показывает, что проблема обычно возникает из-за того, что учетная запись IIS не может получить доступ к этим ресурсам. Это было запущено, и IUSER определенно могут получить доступ к ресурсам - на самом деле, точно такая же папка отлично работает в IIS 7.5; только барфы IIS Express. И только когда мы включаем базовую аутентификацию — если мы включаем аутентификацию Windows, все запросы проходят без проблем.
Наконец, мы попытались запустить sysinternals procmon, чтобы выяснить, смотрим ли мы на правильного пользователя, и не было ли чего-то еще, что дало сбой, и мы обнаружили, что что-то сбоит в результате BAD IMPERSONATION. Но попытки выяснить, кто выдает себя за то, что было бесплодным. Из того, что мы можем сказать, учетные записи IUSER / NETWORK SERVICE / по умолчанию имеют соответствующие уровни доступа, учитывая, что все работает с IIS в рабочем режиме и любой вид проверки доступа проходит. Все учетные записи, на которых работает IIS Express, являются локальными администраторами и должны иметь доступ к олицетворению. Добавление этого права вручную в локальную политику безопасности ничего не изменило. Я просто не вижу способа исправить это, если не считать явного определения пользователя олицетворения, что мне действительно не нужно делать.
Итак, есть ли правильный способ заставить IIS Express работать с базовой аутентификацией и статическими запросами?