使用带有 Class 库的 ASP.NET WebApp 的 ELMAH

Using ELMAH with ASP.NET WebApp with a Class library

我有一个 ASP.NET 4.5 Web 应用程序(IIS 7.5 上的 运行),它从我引用的 class 库中调用一个方法。 当我有未处理的异常时,我想将 ELMAH 添加到日志中。 我已经用 NuGet 安装了 ELMAH。它很好用。 问题是它不记录来自 class 库的任何异常,它只记录来自 Web 应用程序的异常。

我尝试在我的 class 库中添加一个 try catch 并尝试使用以下方法手动记录异常:

ErrorSignal.FromCurrentContext().Raise(e);

但这没有任何作用。

我是否必须在 Web 应用程序和 class 库上安装和引用 ELMAH? web.config 是否足以让 class 库知道要使用哪些处理程序和模块?还是我需要在 class 库中添加另一个配置?

我注意到网络应用程序和 class 库都有一个 packages.config 但它只包含:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="elmah" version="1.2.2" targetFramework="net45" />
  <package id="elmah.corelibrary" version="1.2.2" targetFramework="net45" />
</packages>

我在 Whosebug 上找到了很多关于这个主题的页面,但找不到适合我的答案。

有些人推荐使用

ErrorLog.GetDefault(HttpContext).Log(new Error(errExc)); 

但是 HttpContext 不可用。我尝试使用 null 而不是 HttpContext 但它也没有帮助。

在网上搜索时,我发现 ELMAH 只记录来自网络应用程序的内容。通过安装 NLog 或使用 System.Diagnostic.Trace,我能够记录来自 class 库的内容。

也许我错了,所以如果有人对 ELMAH 和 class 库有更多经验,请分享。

谢谢!