首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC4中的ELMAH和API控制器不记录错误

MVC4中的ELMAH和API控制器不记录错误
EN

Stack Overflow用户
提问于 2012-04-08 08:47:35
回答 2查看 7.5K关注 0票数 12

在MVC4中使用API控制器时,当控制器操作抛出异常时,ELMAH不会记录错误。

我认为问题在于MVC4将HTTP状态码设置为500,并在JSON对象中返回异常详细信息,但它不会抛出未处理的异常,因此它永远看不到它。

如何让ELMAH捕获状态码不是200的所有响应?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-07 14:50:38

前面描述的anwser不起作用。我在测试服务器上进行了尝试,收到一个错误(“给定的筛选器实例必须实现以下一个或多个筛选器接口: IAuthorizationFilter、IActionFilter、IResultFilter、IExceptionFilter”)。

然后我意识到发生了什么.您正在尝试将自定义筛选器添加到MVC全局筛选器(filters.Add(new ElmahHandledErrorLoggerFilter());)

为了解决这个问题,我在GlobalFilter和HttpFilter中拆分了过滤器注册

FilterConfig.cs

代码语言:javascript
复制
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

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

Global.asax

代码语言:javascript
复制
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    FilterConfig.RegisterHttpFilters(GlobalConfiguration.Configuration.Filters);

;-)

票数 22
EN

Stack Overflow用户

发布于 2012-04-09 09:04:50

更新:此答案在最新版本中不起作用。使用朱利安诺克斯的答案。

从这里的信息中找到答案:http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling

其中,异常筛选器记录到elmah:

代码语言:javascript
复制
public class ElmahHandledErrorLoggerFilter : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext actionExecutedContext)
    {
        base.OnException(actionExecutedContext);

        ErrorSignal.FromCurrentContext().Raise(actionExecutedContext.Exception);
    }
}

但您还必须将错误过滤器添加到GlobalConfiguration过滤器中:

代码语言:javascript
复制
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        GlobalConfiguration.Configuration.Filters.Add(new ElmahHandledErrorLoggerFilter());
        filters.Add(new ElmahHandledErrorLoggerFilter());
        filters.Add(new HandleErrorAttribute());
    }
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10059563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档