У меня есть приложение ASP.NET MVC3 с проверкой подлинности Windows, развернутое в IIS6. Когда пользователь, прошедший проверку подлинности, нажимает ссылку, которую они не имеют права на просмотр, им предлагается ввести свое имя пользователя и пароль (в диалоговом окне браузера, а не на странице), как и ожидалось.Получение пустой страницы вместо страницы ошибки 401
Однако после нажатия кнопки «Отмена» или ввода недопустимых учетных данных три раза, вместо того, чтобы видеть страницу несанкционированного доступа 401, я вижу пустую белую страницу.
Глядя на Fiddler, есть три запроса/ответов после нажатия Отмена. Вот резюме ответа и заголовки:
ASP.NET Доступ запрещен сообщение (401,2)
HTTP/1.1 401 Несанкционированное Дата: Пт, 20 июля 2012 14:34:21 GMT сервера : Microsoft-IIS/6.0 WWW-Authenticate: согласование WWW-Authenticate: NTLM X-Powered-By: ASP.NET X-Сеть САШ-версия: 4.0.30319 Cache-Control: частный Content-Type: текст/HTML; кодировка = UTF-8 Content-Length: 1701 Proxy-поддержка: Session-Based-Authentication
IIS Вы не авторизованы для просмотра этой страницы (401,1)
HTTP/1.1 401 Несанкционированное Контент- Длина: 1539 Content-Type: текст/html Сервер: Microsoft-IIS/6.0 WWW-Authenticate: NTLM TlRMTVNTUAACAAAADAAMADgAAAAF ... (для краткости опускаем) X-Powered-By: ASP.NET Дата: Пт, 20 Июль 2012 14:34:21 GMT Прокси-поддержка: аутентификация на основе сеанса
Пустой ответ
HTTP/1.1 401 Несанкционированное Дата: Пт, 20 июля 2012 14:34:21 GMT Сервер: Microsoft-IIS/6.0 WWW-Authenticate: согласование WWW-Authenticate: NTLM X-Powered-By: ASP.NET X-Сеть САШ-версия: 4.0.30319 X-AspNetMvc-Version: 3.0 Cache-Control: частный Content-Length: 0 Proxy-поддержка: Session-Based-Authentication
Как это сделать, чтобы отобразить страницу с ошибкой 401?
Update 1:
Вот моя ошибка web.config раздел.
<customErrors mode="RemoteOnly" defaultRedirect="~/Error" />
Я также использую HandleErrorAttribute
.
Я подозреваю, что IIS возвращает пустую страницу, а не ASP.NET, но я не уверен, как это доказать.
Обновление 2:
Это интересно.Если я обновляю пустую страницу, я вижу сообщение об отказе ASP.NET Access.
Просто догадаться, но пытается ли перенаправить их обратно на страницу имени пользователя и пароля, потому что они все еще не авторизованы? И поскольку он уже думает, что он обратился к пользователю, у представления нет ничего для отображения? –
Это не страница входа в систему, ее диалоговое окно входа в браузер. – jrummell
А жаль не видел эту часть. После третьей попытки вы перенаправляете их на страницу 401? Если нет, вы остаетесь на одной странице, но вы не получите никакого содержимого, потому что сервер не отправляет его. –