joe*_*dev 5 asp.net multithreading elmah
我有一个MVC + SignalR应用程序,它有大量的Reactive Extensions订阅,所有这些都是来自Socket实时数据的预测.其中一些订阅没有按预期工作,当它们引发异常时,它只是进入虚空,除非我正在调试.
我曾希望我可以使用Elmah自动记录这些未处理的异常,但似乎除非异常发生在处理请求/响应的同一个线程上,例如它导致黄色死亡屏幕,Elmah没有触及它.所以我的问题是双重的:
我可以让Elmah自动记录后台/工作进程的异常吗?
如果对#1的回答是"否",除了将我的订阅包装在非常高的级别的try/catch块中之外,我的下一个最佳选择是什么?
广告 1)如果它还没有发生,那么它可能不会发生。
我不知道你到底如何使用后台线程,但我会尝试解释 ELMAH 处理是否有效。ELMAH 集成到 ASP.NET 管道中,当错误发生时,由 ASP.NET 管道处理,显示错误页面(如 http 错误 500)并调用ErrorLogModule. 此外引用使用 HTTP 模块和处理程序创建可插入 ASP.NET 组件 -> 将 ELMAH 添加到 ASP.NET Web 应用程序
本节将 ErrorLogModule HTTP 模块添加到 ASP.NET HTTP 管道。确保包含此设置,否则 ELMAH 将不会侦听 Error 事件,因此不会记录任何未处理的异常。
广告 2)因为您使用的是反应式扩展,所以您onError可以在其中自动登录 Elmah。如果您不想在 OnError 中到处编写错误挂起,只需创建您自己的函数或方法扩展,它会自动为您包装它。手动写入 ELMAH 很简单,只需调用:
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |