我正在使用带有 VS2010 的 MVC 3 并试图让 [HandleError] 工作。我在控制器中创建了一个测试来模拟崩溃,如下所示:
[HandleError]
public ActionResult Crash()
{
throw new ApplicationException();
}
还进入 web.config 并添加:
<customErrors mode="on" />
如果我从 Chrome 运行,MVC 会返回 Shared/Error.aspx 中的视图,因此可以正常工作。
如果我从 IE 8 运行,我会得到它友好的错误页面(“网站无法显示该页面,最可能的原因是:......你可以尝试什么......”)。我进入 IE 工具并关闭“显示友好的 HTTP 错误消息”并再次运行,IE 显示我的 Error.aspx 视图。显然我无法让用户更改此设置,但至少我知道我的 Error.aspx 正在被返回。
所以我运行 Fiddler,当我让浏览器转到我的 Crash 方法时,它表明即使 MVC 返回我的 Error.aspx 视图,它也会为 Result 返回 500。这会导致 IE 认为它有错误并使用其友好页面覆盖我的页面。
我认为 MVC 应该用我的 Error.aspx 页面返回 Result 200 而不是 500。任何人都可以给我一些关于尝试什么的想法吗?