Asp.net web api Elmah不发送webapi异常的电子邮件
我已经设置了elmah,通过包含一个用于webapi事件的httpfilter来获取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 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
。