文章出處

我們一般在開發 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);
    }
}

文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()