ASP.NET MVC Application_Error無効非実行

2159 ワード

私たちは一般的に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);
    }
}