Вкратце, мой вопрос заключается в том, должно ли приложение ASP.NET 4.0, работающее в интегрированном режиме IIS 7, обрабатывать эту часть моего файла Web.config:
<location path="auth/windows">
<system.webServer>
<modules>
<remove name="FormsAuthentication"/>
</modules>
</system.webServer>
</location>
Я экспериментирую со смешанным режимом аутентификации (Windows и Forms). С помощью диспетчера IIS я отключил анонимную проверку подлинности для auth / windows / winauth.aspx, который находится в указанном выше пути расположения. У меня настроена трассировка неудачных запросов для отслеживания различных кодов состояния HTTP, включая 302.
Когда я запрашиваю страницу winauth.aspx, возвращается код состояния HTTP 302. Если я посмотрю на трассировку запроса, я могу увидеть, что 401 (неавторизованный) изначально был сгенерирован AnonymousAuthenticationModule. Однако FormsAuthenticationModule преобразует это в 302, что и видит браузер. Таким образом, похоже, что моя попытка удалить этот модуль из конвейера для страниц по этому пути не работает. Но я нигде не вижу никаких жалоб (программа просмотра событий, желтые страницы смерти и т. Д.), Которые указывали бы на неправильную конфигурацию. Я хочу, чтобы 401 был возвращен браузеру, который предположительно будет включать соответствующий заголовок WWW-Authenticate.
Еще несколько моментов: а) У меня есть <authentication mode="Forms">
в моем Web.config, и это то, на что 302 перенаправляет; б) Я получил "имя" модуля, который пытаюсь удалить, из файла inetserv \ config \ applicationHost.config; в) У меня есть этот элемент в моем файле Web.config: <modules runAllManagedModulesForAllRequests="false">
; г) Я попробовал <location>
элемент для пути, в котором я установил режим проверки подлинности «Нет», но это дало желтую страницу исключения, что свойство не может быть установлено ниже уровня приложения.
Кому-нибудь удавалось удалить модули таким образом?