Asp.net-Mvc
MVC4 中的 ELMAH 和 API 控制器未記錄錯誤
在 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);;-)