Для тега ошибки в разделе Web.config customerErrors необходим код состояния Int32?
Я постоянно сталкиваюсь с примерами настройки пользовательских страниц ошибок, и люди делают такие вещи:
<customErrors mode="RemoteOnly" defaultRedirect="GeneralError.aspx">
<error statusCode="401.2" redirect="4012Error.htm"/>
</customErrors>
Я знаю, что перенаправление 401.2 имеет свой собственный набор головной боли, но IIS не жалуется на это. Вот что это дает мне, когда я просматриваю свой сайт:
Сообщение об ошибке синтаксического анализа : значение свойства statusCode не может быть проанализировано. Ошибка: 401.2 не является допустимым значением для Int32.
Если я изменю его на "401", он будет работать нормально. Даже Intellisense жалуется, что statusCode должен быть Int32.
Как люди используют подкоды? Я конечно не могу!
Большое спасибо!
1 ответ
С http://msdn.microsoft.com/en-us/library/aa478979.aspx
Обычная проверка подлинности в Windows по умолчанию разрешает три попытки для правильного сочетания имени пользователя и пароля. Если все три не удастся, он отправит HTTP 401.2 Несанкционированная ошибка. Поскольку базовая проверка подлинности выполняется IIS, а не ASP.NET, вы не можете создавать настраиваемые страницы ошибок, поскольку ASP.NET никогда не сможет увидеть запрос.
Можете ли вы поместить некоторый код в ваш файл global.asax, чтобы перехватывать ошибки такого типа? Вам просто нужно знать, что файл global.asax выполняется при каждом запросе страницы, поэтому убедитесь, что у вас есть действительные проверки для предотвращения перенаправления до доступа к страницам по умолчанию и страницам входа в систему.
Вы также можете просто зайти в IIS и изменить страницу ошибок по умолчанию, чтобы указать свой URL-адрес для этой ошибки для вашего веб-сайта.