【发布时间】:2014-04-09 20:28:46
【问题描述】:
我有一个 MVC 应用程序,我试图在 ActionFilter 中捕获所有传入请求。这是日志记录代码。我正在尝试登录火灾并忘记模型。
我的问题是,如果我通过取出 Task.Run 同步执行此代码,Elmah 确实会发送一封电子邮件。但是对于下面显示的代码,我可以看到错误被记录到 elmah.axd 中的 InMemory 记录器,但没有电子邮件。
public void Log(HttpContextBase context)
{
Task.Run(() =>
{
try
{
throw new NotImplementedException(); //simulating an error condition
using (var s = _documentStore.OpenSession())
{
s.Store(GetDataToLog(context));
s.SaveChanges();
}
}
catch (Exception ex)
{
ErrorSignal.FromCurrentContext().Raise(ex);
}
});
}
【问题讨论】:
-
我在您的代码中没有看到您发送电子邮件的任何地方。您是否在
GetDataToLog()方法中这样做?如果您是,我们可能还需要查看该代码。 -
我正在寻找关于使用 Elmah 错误信号的 catch 块中的代码的帮助。日志记录发生在 nosql 数据存储中。
-
你没有解决我的问题。您的问题是没有发送电子邮件。我的问题是您的代码中没有任何地方可以发送电子邮件。
-
我正在使用 ELMAH 进行错误记录/通知。 Elmah 是配置驱动的。记录器在 web.config 中配置。在登录到不同配置接收器的应用程序代码中,我只需要执行此 ErrorSignal.FromCurrentContext().Raise(ex);它回答了你的问题吗?
-
所以如果我理解正确的话,
ErrorSignal.FromCurrentContext().Raise(ex);应该发送电子邮件?
标签: elmah