C# MVC中的500内部服务器错误页
我正在尝试为MVC站点设置自定义错误。我的404页面工作正常,但在测试服务器错误时,我得到默认消息: 很抱歉,处理您的请求时出错 而不是我的自定义页面 我已在web.config中设置了此选项:C# MVC中的500内部服务器错误页,c#,asp.net-mvc-3,error-handling,custom-errors,C#,Asp.net Mvc 3,Error Handling,Custom Errors,我正在尝试为MVC站点设置自定义错误。我的404页面工作正常,但在测试服务器错误时,我得到默认消息: 很抱歉,处理您的请求时出错 而不是我的自定义页面 我已在web.config中设置了此选项: <customErrors mode="On" defaultRedirect="~/Error/500"> <error statusCode="404" redirect="~/Error/404" /> <error statusCode="500"
<customErrors mode="On" defaultRedirect="~/Error/500">
<error statusCode="404" redirect="~/Error/404" />
<error statusCode="500" redirect="~/Error/500" />
</customErrors>
我正在测试500
错误页面,方法是在我的一个视图中引发异常:
[ActionName("contact-us")]
public ActionResult ContactUs()
{
throw new DivideByZeroException();
return View();
}
为什么只处理404个错误?如何显示500
错误的错误页面?解决了这个问题
创建项目时,Global.asax.cs
中留下了一些样板代码:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
特别是:
filters.Add(new HandleErrorAttribute());
这将创建一个新的HandleErrorAttribute
实例,该实例将全局应用于我的所有视图
在没有自定义的情况下,如果视图在使用此属性时抛出错误,MVC将在共享的文件夹中显示默认的error.cshtml
文件,该文件夹中有:“对不起,处理请求时出错。”
从以下文件:
默认情况下,当具有HandleErrorAttribute属性的操作方法引发任何异常时,MVC将显示位于~/Views/Shared文件夹中的错误视图
注释这一行解决了问题,允许我对500个错误使用自定义错误页。在MVC5中,全局过滤器注册由global.asax.cs中的FilterConfig.RegisterGlobalFilter(GlobalFilters.Filters)完成,因此对于任何希望在MVC 5中使用此修复程序的人,您可能需要查找这一行
filters.Add(new HandleErrorAttribute());