自定义500错误页面在ASP.NET不工作MVC 5

问题描述:

这里是我的web.config的自定义错误配置:自定义500错误页面在ASP.NET不工作MVC 5

为404
<system.web> 
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/400.aspx"> 
    <error statusCode="404" redirect="~/404.aspx" /> 
    <error statusCode="500" redirect="~/500.aspx" /> 
    <error statusCode="400" redirect="~/400.aspx" /> 
</customErrors> 
</system.web> 
    <system.webServer> 
    <httpErrors errorMode="Custom"> 
     <remove statusCode="404"/> 
     <error statusCode="404" path="404.html" responseMode="File"/> 
     <remove statusCode="500"/> 
     <error statusCode="500" path="500.html" responseMode="File"/> 
     <remove statusCode="400"/> 
     <error statusCode="400" path="400.html" responseMode="File"/> 
    </httpErrors> 
</system.webServer> 

工作正常,但该本地主机:44303/< SCRIPT> < /脚本>返回:运行时错误。

除了抛出一个新的异常从动作故意重定向到MVC的错误页面,我想重写我的500.aspx

经过一番研究,对于添加作为一个全球性的HandleErrorAttribute源代码过滤器,有代码试图强制应用程序使用MVC错误页面。

所以我所做的是子类HandleErrorAttribute和有效扭转该行:

public class MyHandleErrorAttribute : HandleErrorAttribute 
{ 
    public override void OnException(ExceptionContext filterContext) 
    { 
     base.OnException(filterContext); 

     filterContext.HttpContext.Response.TrySkipIisCustomErrors = false; 
    } 
} 

然后替换App_Start/FilterConfig.cs代码以使用新的MyHandleErrorAttribute:

filters.Add(new MyHandleErrorAttribute()); 

这应该防止MVC覆盖您的自定义500页面。