【问题标题】:Use Elmah to Catch Unhandled Exceptions using IExceptionFilter使用 Elmah 使用 IExceptionFilter 捕获未处理的异常
【发布时间】:2013-06-10 19:01:57
【问题描述】:

我正在尝试将我为 MVC 找到的一些代码转换为在常规 Asp.Net 中工作。简而言之,我希望能够使用 Elmah 记录处理的异常,而不必在每次发生异常时调用记录方法。我已经四处寻找这个,我找到的所有解决方案都使用 MVC。我在这里找到了一个简单而优雅的应用程序,即使我的应用程序使用 MVC 进行客户端调用,它也不是一个成熟的 MVC 项目,所以我想它不会工作或者我遗漏了一些东西。

这里是代码

public class ElmahHandledErrorLoggerFilter : IExceptionFilter
{
    public void OnException (ExceptionContext context)
    {
        // Log only handled exceptions, because all other will be caught by ELMAH anyway.
        if (context.ExceptionHandled)
            ErrorSignal.FromCurrentContext().Raise(context.Exception);
    }
}

public static void RegisterGlobalFilters (GlobalFilterCollection filters)
{
    filters.Add(new ElmahHandledErrorLoggerFilter());
    filters.Add(new HandleErrorAttribute());
}

帖子来自: How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?

表示将第二个代码块放在 global.asax 文件中。该事件永远不会被我调用,所以我想知道我是否必须自己调用它,如果我这样做,那么我将传递给它什么?我更想知道常规 ASP 网络的等价物是什么,因为我不熟悉 MVC,尽管因为我有对 MVC dll 的引用,如果有人我愿意尝试让它“按原样”工作有想法。

【问题讨论】:

    标签: c# asp.net elmah


    【解决方案1】:

    由于常规 ASP.NET 具有不同的加载页面管道,因此过滤器不会应用于这些页面请求。但是,它将针对 MVC 特定路由执行,您找到的解决方案确实是最好的。还有一些具有相同实现的 NuGet 包。

    标准 ELMAH 包应该已经捕获了所有未处理的异常,对于 ASP.NET Forms 应用程序也是如此。我建议您按照标准文档进行设置。

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      相关资源
      最近更新 更多