加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 使用Elmah捕获背景线程中的异常

发布时间:2020-12-16 03:16:39 所属栏目:asp.Net 来源:网络整理
导读:我有一个MVC SignalR应用程序,它有大量的Reactive Extensions订阅,所有这些都是来自Socket实时数据的预测.其中一些订阅没有按预期工作,当它们引发异常时,它只是进入虚空,除非我正在调试. 我曾希望我可以使用Elmah自动记录这些未处理的异常,但似乎除非异常发
我有一个MVC SignalR应用程序,它有大量的Reactive Extensions订阅,所有这些都是来自Socket实时数据的预测.其中一些订阅没有按预期工作,当它们引发异常时,它只是进入虚空,除非我正在调试.

我曾希望我可以使用Elmah自动记录这些未处理的异常,但似乎除非异常发生在处理请求/响应的同一个线程上,例如它导致黄色死亡屏幕,Elmah没有触及它.所以我的问题是双重的:

>我可以让Elmah自动记录后台/工作进程的异常吗?
>如果#1的答案是“否”,除了将我的订阅包装在非常高的级别的try / catch块中之外,我的下一个最佳选择是什么?

解决方法

广告1)如果它没有发生,它可能没有.

我不知道你是如何使用后台线程的,但我会尝试解释ELMAH处理是否有效. ELMAH集成到ASP.NET管道中,当错误发生时,它由ASP.NET管道处理,它显示错误页面(如http错误500)并调用ErrorLogModule.另外引用Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components -> Adding ELMAH to an ASP.NET Web Application

The section adds the ErrorLogModule HTTP module to the
ASP.NET HTTP pipeline. Make sure you include this
setting,otherwise ELMAH won’t be listening for the Error event,and
therefore won’t be logging any unhandled exceptions.

Ad 2)因为您正在使用Reactive Extensions,所以您可以处理onError,您可以在其中自动登录Elmah.如果您不希望在OnError中出现错误挂起,只需创建自己的函数或方法扩展,它将自动为您包装它.手动写入ELMAH只需调用:

Elmah.ErrorSignal.FromCurrentContext().Raise(ex);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读