В чем разница между customErrors
и httpErrors
секциями файла web.config в приложениях ASP.NET MVC?
Каковы рекомендации по использованию каждого раздела?
web-config
iis-7.5
Алан Т
источник
источник
Ответы:
Отказ от ответственности: это из моего опыта, а не доказанный факт.
Оба используются для определения обработки ошибок для веб-сайта, но разные программы ссылаются на разные элементы конфигурации.
customErrors
являются устаревшим (обратно совместимым) элементом, используемым Visual Studio Development Server (он же VSDS или Cassini).httpErrors
являются новым элементом, который используется только IIS7.Это подчеркивает возможную проблему при разработке веб-сайтов ASP.NET при использовании VSDS вместо локального IIS.
Кроме того, обратитесь к этому посту, чтобы узнать, как обрабатывать сообщения об ошибках в IIS7, если вы хотите полностью контролировать вывод ошибок.
Резюме:
VSDS
использованииcustomErrors
IIS6
использованияcustomErrors
IIS7
использованияhttpErrors
.и если вы разрабатываете,
VSDS
но публикуетеIIS7
, то, я думаю, вам понадобятся оба.источник
* Обновлено в апреле 2016
Атрибут customErrors используется, когда код .net вызывает исключение (404, 403, 500 и т. Д.), А атрибут httpErrors используется, когда сам IIS создает исключение.
Есть много ловушек, пытающихся настроить это правильно. Так что, если вы ищете быстрый пример, лучшие 2 варианта у вас есть:
Пример 1. Использование HTML-страниц
Пример 2: использование страниц aspx
И на страницах ошибок aspx вам нужно сделать что-то вроде этого (пример страницы 404):
Примечание. Использование расширений less url в разделе customErrors невозможно! , (без хаков)
Обходной путь - отключить пользовательские ошибки и позволить ошибкам http обрабатывать пользовательскую страницу. Друг создал такую настройку, когда найду время, поделюсь кодом.
Задний план
Хорошая пользовательская страница ошибки будет:
Итак, чтобы уточнить некоторые параметры в нашем конфиге:
<customErrors mode="RemoteOnly"
, Вы можете задать здесь:On
,Off
,RemoteOnly
.On
= Всегда показывать пользовательские страницы ошибокOff
= Всегда показывать реальную ошибкуRemoteOnly
= Показать ошибку локально, но показать страницу с ошибкой удаленно. Итак, мы хотимRemoteOnly
для утверждения 1<customErrors redirectMode="ResponseRewrite"
, Вы можете указать здесь:ResponseRedirect
илиResponseRewrite
.ResponseRedirect
Режим перенаправления на страницу ошибки на страницу ошибки. Для сканера ссылок (SEO) это приведет к 302 -> 500, но вы хотите, чтобы сканер ссылок получил ошибку 500.<httpErrors errorMode="DetailedLocalOnly"
, Это эквивалентcustomErrors
режима. Параметры , которые у вас есть:Custom
,Detailed
,DetailedLocalOnly
.Хорошая запись в блоге, которая мне очень помогла: http://benfoster.io/blog/aspnet-mvc-custom-error-pages
источник
<customErrors>
против<httpErrors>
<customErrors>
<httpErrors>
Цитируемый источник: Custom 404 и страницы ошибок в ASP.NET (отличная статья)
ExecuteURL
обслуживает динамическое содержимое, например страницу ASPX (path
значение должно быть относительным URL-адресом сервера ):File
обслуживает пользовательский файл ошибок, например страницу HTML.Ссылка: Ошибки HTTP (www.iis.net)
для более подробной информации, прочитайте ссылку www.iis.net выше
источник
it's no loger necesary to use customErrors
и цитату, это - действительно информация, за которой я был :-)Раздел ошибок в веб-конфигурации предназначен для обеспечения настраиваемого подхода к обработке ошибок http. Есть два раздела: один customErrors внутри раздела system.web и другой httpErrors внутри раздела system.webServer (как показано ниже)
customErrors: этот раздел использовался до введения IIS 7, IIS 6 5 и до полного использования этого раздела для обработки пользовательских ошибок http в соответствии с кодом состояния http.
Ошибки http: IIS 7 и более поздние версии используют этот раздел, а также раздел customErrors для обработки пользовательских ошибок http на основе их расширений файлов, если запрашиваемое расширение страницы регистрируется в ISAPI dll (.aspx, ashx, .asmx, .svc и т. д.), например index.aspx затем IIS забирает настройку из раздела customeErrors, иначе он выбирает настройку из httpErrors (режим размещения IIS 7 должен быть настроен как интегрированное, а не классическое настроение)
ниже приведены примеры для 404 ссылки проверки ошибок:
httperrors против клиентских ошибок в webconfig, iis, asp.net
источник