相关疑难解决方法(0)

在控制台应用程序中使用ELMAH

我刚开始使用ELMAH并且是粉丝.我的团队支持大量的Web应用程序,我特别兴奋的是ELMAH允许我们将每个应用程序的异常保存到同一个MS SQL数据库表中.

我们还支持一些控制台,DLL和桌面应用程序.是否可以使用ELMAH DLL将这些应用程序中的异常记录到同一位置?

.net elmah desktop-application console-application

65
推荐指数
4
解决办法
3万
查看次数

使用ELMAH的WCF服务的异常日志记录

我们使用优秀的ELMAH来处理ASP.NET 3.5 Web应用程序中的未处理异常.除了使用REST功能使用的WCF服务之外,这对于所有站点都非常有效.当应用程序代码未处理的操作方法中发生异常时,WCF会以各种方式处理它,具体取决于服务协定和配置设置.这意味着该异常不会最终触发ELMAH使用的ASP.NET HttpApplication.Error事件.我知道要处理的两个解决方案是:

  • 在try {} catch中包含所有方法调用(Exception ex){Elmah.ErrorSignal.FromCurrentContext().Raise(ex); 扔; 在catch块中显式调用Elmah.
  • 使用IErrorHandler,如Will Hughes的博客文章中所述,使WCF和ELMAH一起发挥出色,将对ELMAH的调用分解为单独的ErrorHandler.

第一个选项非常简单,但并不完全是DRY.第二个选项仅要求您在实现属性和ErrorHandler后使用自定义属性装饰每个服务.我是根据Will的工作完成的,但我想在发布代码之前验证这是正确的方法.

有没有更好的方法让我错过了?

在MSDN documenation为IErrorHandler说,的HandleError方法是做记录的地方,但ELMAH访问HttpContext.Current.ApplicationInstance,即使HttpContext.Current可用,在此方法中为null.在ProvideFault方法中调用Elmah是一种解决方法,因为ApplicationInstance已设置,但这与API文档中描述的意图不匹配.我在这里错过了什么吗?文档确实声明您不应该依赖于在操作线程上调用的HandleError方法,这可能是ApplicationInstance在此范围内为空的原因.

asp.net wcf logging elmah exception

62
推荐指数
2
解决办法
2万
查看次数