我正在尝试将我为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的参考,我会愿意让它工作'就像'如果有人有想法。
答案 0 :(得分:0)
由于常规ASP.NET具有用于加载页面的不同管道,因此过滤器不会应用于这些页面请求。但是,它将针对MVC特定路由执行,并且您找到的解决方案确实是最好的。还有一些具有相同实现的NuGet包。
标准的ELMAH包应该已经捕获了所有未处理的异常,也适用于ASP.NET Forms应用程序。我建议您按照标准文档进行设置。