Asp.net-Mvc

MVC4 中的 ELMAH 和 API 控制器未記錄錯誤

  • May 11, 2014

在 MVC4 中使用 API 控制器,當控制器操作引發異常時,ELMAH 不會記錄錯誤。

我認為問題在於 MVC4 將 HTTP 狀態程式碼設置為 500,並在 JSON 對像中返回異常詳細資訊,但它不會引發未處理的異常,因此 ELMAH 永遠不會看到它。

如何讓 ELMAH 擷取狀態程式碼不是 200 的所有響應?

前面描述的 anwser 不起作用。我在我的測試伺服器上嘗試過並收到一個錯誤(“給定的過濾器實例必須實現以下一個或多個過濾器介面:IAuthorizationFilter、IActionFilter、IResultFilter、IExceptionFilter。”)

然後我意識到發生了什麼….您正在嘗試將自定義過濾器添加到 MVC 全域過濾器 (filters.Add(new ElmahHandledErrorLoggerFilter());)

為了解決這個問題,我在 GlobalFilter 和 HttpFilter 中拆分了過濾器註冊

過濾器配置文件

   public static void RegisterGlobalFilters(GlobalFilterCollection filters)
   {
       filters.Add(new HandleErrorAttribute());
   }

   public static void RegisterHttpFilters(HttpFilterCollection filters)
   {
       filters.Add(new ElmahHandledErrorLoggerFilter());
   }

全球.asax

   FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
   FilterConfig.RegisterHttpFilters(GlobalConfiguration.Configuration.Filters);

;-)

引用自:https://stackoverflow.com/questions/10059563