我已经尝试了所有方法,甚至卸载了 asp.net mvc3,但我无法让 HandleError 全局过滤器工作。
我已经在 Global.asax 中设置了 HandleError 过滤器:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
我还启用了 CustomErrors(我是否设置 defaultRedirect="Error"并不重要,我认为这在文档中是因为旧版本的 mvc 需要):
<customErrors mode="On" />
尝试浏览页面直到出现错误,无论您是从本地主机还是使用主机名,在开发服务器或 IIS 7.5 中,它总是重定向到标准状态 500 页面,而不是我的自定义 Error.cshtml我在共享中创建的 View 。这是错误查看代码:
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Oooops";
}
<h2>Ooops Something really bad happened!</h2>
我还注意到,如果我创建一个新的 ASP.NET MVC3 项目,然后选择“Internet 应用程序”模板,并在该项目中启用 customErrors,则 HandleError 过滤器开始正常工作,但是使用空的 MVC3 模板没有。
我想澄清一下,我确实可以在调试时看到错误 View 正在处理,但是浏览器总是显示错误 500 页面。
最佳答案
要解决此问题,您需要做的就是编辑您的 Error.cshtml 页面并确保您已正确设置 Layout 属性。在空 MVC 3 应用程序中,它被设置为 NULL,这会导致 HTTP 500 内部服务器错误。
我通过简单地添加解决了这个问题:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
关于c# - asp.net mvc 3 handleerror 全局过滤器总是显示 IIS 状态 500 页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4842721/