UPD: вот полное решение для обработки ошибок
У меня есть простой веб-проект vanilla MVC4. Ничего не добавлено, ничего не удалено, просто создал новый проект в Visual Studio.
В web.config
Я добавил пользовательский обработчик страницы ошибок:
<customErrors mode="On" defaultRedirect="~/Content/Error.htm" redirectMode="ResponseRewrite" />
а файл ~/Content/Error.htm
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>OOPS! Error Occurred. Sorry about this.</title>
</head>
<body>
<h2>OOPS! Error Occurred</h2>
</body>
</html>
Всякий раз, когда я получаю ошибку 404 на сайте, Error.htm используется как открытый текст в Firefox и Chrome:
Fiddler говорит, что страница с ошибкой подается без заголовка content-type
, который заставляет браузеры отображать страницу как обычный текст:
Есть ли способ заставить страницы ошибок сервера IIS с заголовком content-type
p.s. фактическая проблема заключается в сложном проекте MVC4, который имеет собственную обработку ошибок в Global.asax. Но я обнаружил, что некоторые ошибки не проходят через ASP-канал и обрабатываются только IIS. Как точка в конце URL. Решение с < httpErrors/" > выполняет корректные ответы, но наша настраиваемая обработка ошибок в Global.asax, Application_Error() не вызвана таким образом.
UPD Кажется, я не могу победить в этой войне. IE показывает, что html правильно отображается, Firefox и Chrome отображаются как обычный текст. Когда я переключаюсь на обычный текст, Firefox и IE корректно показывают пустое пространство, IE поглощает пустое пространство и пытается отобразить html. Если я попробую показать изображение как страницу с ошибкой, Firefox и Chrome покажут изображение. IE показывает это: Facepalm!