gpt4 book ai didi

asp.net - 使用 Elmah 捕获后台线程中的异常

转载 作者:行者123 更新时间:2023-12-02 12:05:10 27 4
gpt4 key购买 nike

我有一个 MVC+SignalR 应用程序,其中有很多响应式扩展订阅,所有这些订阅都是来自 Socket 的实时数据投影。其中一些订阅没有按预期工作,当它们引发异常时,除非我正在调试,否则它就会消失。

我本来希望我可以使用Elmah自动记录这些未处理的异常,但似乎除非异常发生在处理请求/响应的同一线程上,例如它会导致蓝屏死机,否则 Elmah 不会触及它。所以我的问题有两个:

  1. 我可以让 Elmah 自动记录后台/工作进程的异常吗?

  2. 如果问题 1 的答案是“否”,除了将我的订阅包装在非常高的级别的 try/catch block 中之外,我的下一个最佳选择是什么?

最佳答案

广告 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.

广告 2) 因为您使用的是响应式扩展,所以您可以处理 onError,在其中您可以自动登录 Elmah。如果您不想在 OnError 中到处编写错误挂起,只需创建您自己的函数或方法扩展,它会自动为您包装它。手动写入 ELMAH 很简单,只需调用:

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

关于asp.net - 使用 Elmah 捕获后台线程中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27116579/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com