在 MVC4 中使用 API 控制器,当控制器操作引发异常时,ELMAH 不会记录错误。
我认为问题在于 MVC4 将 HTTP 状态代码设置为 500,并且它返回 JSON 对象中的异常详细信息,但它不会抛出未处理的异常,因此 ELMAH 永远不会看到它。
如何让 ELMAH 捕获状态代码不是 200 的所有响应?
之前描述的 anwser 不起作用。我在我的测试服务器上尝试过并收到错误(“给定的过滤器实例必须实现以下一个或多个过滤器接口:IAuthorizationFilter、IActionFilter、IResultFilter、IExceptionFilter。”)
然后我意识到发生了什么......您正在尝试将自定义过滤器添加到 MVC 全局过滤器 (filters.Add(new ElmahHandledErrorLoggerFilter());)
为了解决这个问题,我将过滤器注册拆分为 GlobalFilter 和 HttpFilter
FilterConfig.cs
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);
;-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)