我正在尝试使用 elmah 记录我的 asp.net web api 项目中的异常。我遇到的问题是每个错误都会记录两次。
我正在使用 Elmah.Contrib.Web-Api,我的应用程序类如下:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configuration.Filters.Add(new ElmahHandleErrorApiAttribute());
RouteTable.Routes.MapHubs();
RouteConfig.RegisterRoutes(RouteTable.Routes);
#if DEBUG
EntityFrameworkProfiler.Initialize();
#endif
GlobalConfig.CustomizeConfig(GlobalConfiguration.Configuration);
}
}
如果我注释掉以下行,那么我根本不会收到任何消息:
GlobalConfiguration.Configuration.Filters.Add(new ElmahHandleErrorApiAttribute());
我可以确认我只抛出一个错误,并且生成错误的调用仅被调用一次,并且我没有使用 Elmah 属性手动装饰我的控制器或方法。
为了尝试解决这个问题,我删除了 Contrib 包并按照此处的说明进行添加http://www.tugberkugurlu.com/archive/asp-net-web-api-and-elmah-integration http://www.tugberkugurlu.com/archive/asp-net-web-api-and-elmah-integration
这并没有解决问题,它仍然记录两次。它确实允许我在 Attribute 类中放置一个断点,并确认对于每个错误它都会被调用两次。
我该如何解决这个问题?
您的 web.config 中有哪些与 ELMAH 相关的条目?
我在 MVC 应用程序中遇到了类似的问题 - 已处理的异常被记录两次。在应用程序中,我使用自定义异常过滤器通过错误信号将已处理的异常记录到 ELMAH,而 HTTP 模块负责处理未处理的异常。
事实证明我需要设置:
<add key="elmah.mvc.disableHandleErrorFilter" value="true" />
在 web.config 中,以禁用 ELMAH.MVC NuGet 包中的内置异常过滤器。
内置过滤器的源代码显示它记录已处理的异常:https://github.com/alexanderbeletsky/elmah-mvc/blob/master/src/Elmah.Mvc/HandleErrorAttribute.cs https://github.com/alexanderbeletsky/elmah-mvc/blob/master/src/Elmah.Mvc/HandleErrorAttribute.cs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)