У меня есть приложение ASP.NET MVC3 с проверкой подлинности Windows, развернутое в IIS6. Когда аутентифицированный пользователь щелкает ссылку, которую ему не разрешено просматривать, ему предлагается ввести свое имя пользователя и пароль (в диалоговом окне браузера, а не на странице ), как ожидалось.
Однако после трехкратного нажатия кнопки «Отмена» или ввода неверных учетных данных вместо страницы 401 Unauthorized я вижу пустую белую страницу.
Глядя на Fiddler, после нажатия кнопки «Отмена» есть три запроса/ответа. Вот резюме ответов и заголовки:
Сообщение об отказе в доступе к ASP.NET (401.2)
HTTP/1.1 401 Неавторизованный Дата :Пт, 20 июля 2012 14 :34 :21 GMT Сервер :Microsoft -IIS/6.0 WWW -Аутентификация :Согласование WWW -Аутентификация :NTLM X -Работает на -By :ASP.NET X -AspNet -Версия :4.0.30319 Кэш -Управление :частный Контент -Тип :text/html; кодировка=utf -8 Содержание -Длина :1701 Прокси -Поддержка :Сессия -На основе -Аутентификация
IIS У вас нет прав для просмотра этой страницы (401.1)
HTTP/1.1 401 Неавторизованный Содержание -Длина :1539 Контент -Тип :text/html Сервер :Microsoft -IIS/6.0 WWW -Аутентификация :NTLM TlRMTVNTUAACAAAADAAMADgAAAAF... (опущено для краткости )X -Работает на -By :ASP.NET Дата :Пт, 20 июля 2012 г. 14 :34 :21 GMT Прокси -Поддержка :Сессия -На основе -Аутентификация
Пустой ответ
HTTP/1.1 401 Неавторизованный Дата :Пт,20 июля 2012 г. 14 :34 :21 GMT Сервер :Microsoft -IIS/6.0 WWW -Аутентификация :Согласование WWW -Аутентификация :NTLM X -Работает на -By :ASP.NET X -AspNet -Версия :4.0.30319 X -AspNetMvc -Версия :3.0 Кэш -Управление :частный Содержание -Длина :0 Прокси -Поддержка :Сеанс -На основе -Аутентификация
Как мне заставить это отображать страницу с ошибкой 401?
Обновление 1:
Вот мой раздел ошибок web.config.
Я также используюHandleErrorAttribute
.
Я подозреваю, что IIS возвращает пустую страницу, а не ASP.NET, но я не знаю, как это доказать.
Обновление 2:
Это интересно. Если я обновлю пустую страницу, я увижу сообщение «Отказано в доступе к ASP.NET».