自定义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页面。