我已经尝试了一切,甚至卸载了asp.net mvc3,我无法让HandleError全局过滤器工作.
我在Global.asax中设置了HandleError过滤器:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
Run Code Online (Sandbox Code Playgroud)
我也启用了CustomErrors(如果我设置defaultRedirect ="Error"并不重要,我认为这是在文档中因为旧版本的mvc需要):
<customErrors mode="On" />
Run Code Online (Sandbox Code Playgroud)
尝试浏览页面直到错误被引发,你从localhost或使用主机名,在开发服务器或IIS 7.5中,它总是重定向到标准状态500页,而不是我自定义Error.cshtml视图,我已在共享中创建.这是错误视图代码:
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Oooops";
}
<h2>Ooops Something really bad happened!</h2>
Run Code Online (Sandbox Code Playgroud)
另外我注意到,如果我创建一个新的ASP.NET MVC3项目,然后选择"Internet Application"模板,并且只是在该项目中启用customErrors,那么HandleError过滤器开始正常工作,但是使用空的MVC3模板却没有.
我想澄清一下,确实我可以在调试时看到正在处理的错误视图,但浏览器始终显示错误500页面.