【问题标题】:The custom 500 error page not working in ASP.NET MVC 5自定义 500 错误页面在 ASP.NET MVC 5 中不起作用
【发布时间】:2015-03-08 06:15:13
【问题描述】:

这是我的 web.config 自定义错误配置:

<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>

适用于 404。 但是这个 localhost:44303/ 返回:Runtime Error.

同时从一个动作中抛出一个新的异常会故意重定向到 mvc 错误页面,我想用我的 500.aspx 覆盖它

【问题讨论】:

    标签: asp.net-mvc error-handling web-config asp.net-mvc-5 custom-error-pages


    【解决方案1】:

    在对作为全局过滤器添加的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 页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-27
      • 2015-11-14
      • 2015-11-09
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 2013-10-30
      • 2014-05-10
      相关资源
      最近更新 更多