1

我已经设置 elmah 以通过包含 webapi 事件的 httpfilter 来获取 webapi 异常,如ELMAH 和 MVC4 中的 API 控制器中所述,没有记录错误
它有效,我可以看到错误进入 elmah db,问题是 errorMail 模块似乎无法接收它们,即使它为正常操作而没有问题地拾取它们
我已经删除了所有错误过滤器,这不是不发送电子邮件的原因。
我还尝试通过在 global.asax 中添加一个 void ErrorMail_Filtering(object sender, ExceptionFilterEventArgs args) 方法来为电子邮件设置一个特殊过滤器,但是对于 webapi 异常,这甚至从未达到(适用于非 webapi 异常)
有其他人遇到过这个问题并且知道如何解决吗?我不想不得不更换 elmah 电子邮件过滤器......

4

1 回答 1

7

我使用Elmah.ErrorSignal.FromCurrentContext().Raise(...)而不是Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(...)因为所有配置的错误记录器都有机会消耗异常。因此,Elmah.axd 中会出现异常,我会收到一封电子邮件。如果我使用Log它只会转到默认的错误记录器,并且我不会收到电子邮件。

在旁边

Web API 2.1 改进了全局错误处理。如果您可以使用 v2.1,我建议您走这条路线。

public class UnhandledExceptionLogger : ExceptionLogger
{
    public override void Log(ExceptionLoggerContext context)
    {
        Elmah.ErrorSignal.FromCurrentContext().Raise(context.Exception);
    }
}

要使用它,请使用 HttpConfiguration 注册它,如下所示:

public static void Register(HttpConfiguration config)
{
    // Web API configuration and services
    // ...
    config.Services.Add(typeof(IExceptionLogger), new UnhandledExceptionLogger());

    // Web API routes
    // ...
}
于 2014-03-07T21:08:26.687 回答