zoukankan      html  css  js  c++  java
  • ASP.NET MVC Application_Error 无效不执行

    我们一般在开发 ASP.NET MVC 应用程序的时候,会在 Application_Error 中添加异常日志记录,一般会记录 500 的错误信息,但如果应用程序在出错的时候,Application_Error 不执行了,这是非常可怕的。

    解决方式,在 Global.asax.cs 中移除对 HandleErrorAttribute 的注册绑定:

    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            ....
        }
    }
    
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute()); //移除
        }
    }
    

    参考资料:http://stackoverflow.com/questions/6508415/application-error-not-firing-when-customerrors-on


    除了移除 HandleErrorAttribute,还有种更好的方案:

    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new CustomErrorAttribute());
        }
    }
    
    public class CustomErrorAttribute : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            Log("AppError", filterContext.Exception);// 日志记录
            base.OnException(filterContext);
        }
    }
    
  • 相关阅读:
    Gitbook
    Docker命令
    sd
    文本三剑客
    2017.4.12下午
    2017.4.11下午
    2017.4.11上午
    2017.4.10下午
    2017.4.10上午
    2017.4.7下午
  • 原文地址:https://www.cnblogs.com/xishuai/p/asp-net-mvc-application-error-not-firing.html
Copyright © 2011-2022 走看看