UPD:这是错误处理的完整解决方案
我有普通的 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
标题,这导致浏览器将页面呈现为纯文本:
有没有办法强制带有content-type
标头的 IIS 服务器错误页面?
ps 实际问题出在一个复杂的 MVC4 项目中,它在 Global.asax 中有自己的错误处理。但我发现有些错误不会通过 ASP 管道,仅由 IIS 处理。就像网址末尾的点一样。< httpErrors />的解决方案确实提供了正确的响应,但是我们在 Global.asax 中的自定义错误处理,Application_Error() 没有以这种方式调用。
UPD看来我无法赢得这场战争。IE 显示正确呈现的 html,Firefox 和 Chrome 显示为纯文本。当我切换到纯文本时,Firefox 和 IE 正确显示空白,IE 吞下空白并尝试呈现 html。如果我尝试将图像作为错误页面提供,Firefox 和 Chrome 会显示图像。IE 显示: Facepalm!