Asp.net web api Elmah不发送webapi异常的电子邮件

Asp.net web api Elmah不发送webapi异常的电子邮件,asp.net-web-api,elmah,elmah.mvc,Asp.net Web Api,Elmah,Elmah.mvc,我已经设置了elmah,通过包含一个用于webapi事件的httpfilter来获取webapi异常,如 它工作正常,我可以看到错误进入elmah db,问题是errorMail模块似乎无法拾取它们,即使它拾取正常操作的错误而没有问题 我已经删除了所有错误过滤器,这不是电子邮件不被发送的原因。 我还尝试通过在global.asax中添加一个void ErrorMail_Filtering(对象发送者,ExceptionFilterEventArgs args args)方法为电子邮件设置一个特殊

我已经设置了elmah,通过包含一个用于webapi事件的httpfilter来获取webapi异常,如
它工作正常,我可以看到错误进入elmah db,问题是errorMail模块似乎无法拾取它们,即使它拾取正常操作的错误而没有问题
我已经删除了所有错误过滤器,这不是电子邮件不被发送的原因。
我还尝试通过在global.asax中添加一个void ErrorMail_Filtering(对象发送者,ExceptionFilterEventArgs args args)方法为电子邮件设置一个特殊过滤器,但对于webapi异常,甚至从未达到过这一点(适用于非webapi异常)

还有谁遇到过这个问题,知道如何解决吗?我不想替换elmah电子邮件过滤器…

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

在一边 WebAPI2.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
    // ...
}

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

在一边 WebAPI2.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
    // ...
}
工作得很好。扩展解决方案如果您刚刚开始实施Web API,如果此解决方案似乎不起作用,请检查您的elmah
。效果很好。扩展解决方案如果您刚刚开始实施Web API,如果此解决方案似乎不起作用,请检查您的elmah