文章出處
文章列表
我們一般在開發 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);
}
}
文章列表
全站熱搜