1

我正在尝试将我为 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());
}

帖子来自: 如何让 ELMAH 与 ASP.NET MVC [HandleError] 属性一起使用?

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

4

1 回答 1

0

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

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

于 2013-09-16T10:08:12.207 回答