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