Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC中的500内部服务器错误页_C#_Asp.net Mvc 3_Error Handling_Custom Errors - Fatal编程技术网

C# MVC中的500内部服务器错误页

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"

我正在尝试为MVC站点设置自定义错误。我的404页面工作正常,但在测试服务器错误时,我得到默认消息:

很抱歉,处理您的请求时出错

而不是我的自定义页面

我已在web.config中设置了此选项:

<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());