【发布时间】:2009-07-10 16:32:53
【问题描述】:
我们的 WCF 服务偶尔会产生一个工作线程来处理客户端不关心的事情。工作线程不会向客户端报告任何状态。事实上,在线程结束时,服务可能已经将结果返回给客户端。
其中一个后台线程最近引发了异常。异常未处理,因此 IIS 崩溃。
我可以修复这个特定的异常,但是将来有人可能会添加一些导致另一个意外异常的代码。我想防止这种情况在将来使 IIS 崩溃。
我知道 System.Windows.Forms 应用可以通过实现Application.ThreadException 来处理线程异常。我可以从 WCF 服务中做类似的事情吗?或者如果Application.ThreadException 是要走的路,我将如何从 WCF 服务中连接它?
AppDomain.UnhandledException 的 MSDN 文档说它不能防止崩溃。 ServiceModel.AsynchronousThreadExceptionHandler 的文档建议它仅适用于 WCF 线程。
至少,我想在崩溃之前从异常中获取堆栈跟踪,但完全避免未来的崩溃将是理想的。
再次强调,这不是我想作为 WCF 错误返回给客户端的异常。
【问题讨论】:
标签: wcf multithreading exception-handling