C# WCF服务上的Application.ThreadException?
在我的WCF服务上找不到要侦听的C# WCF服务上的Application.ThreadException?,c#,.net,wcf,exception-handling,thread-exceptions,C#,.net,Wcf,Exception Handling,Thread Exceptions,在我的WCF服务上找不到要侦听的Application.ThreadException事件。我想这是针对WinForms的,那么WCF服务是否有ThreadException事件?或者它们最终会出现在AppDomain.CurrentDomain.UnhandledException?应用程序.ThreadException事件只用于“处理在Windows窗体线程中发生的未经处理的异常”(强调添加,),因此它在WCF服务中没有太大帮助 您最好的选择是确实使用AppDomain.CurrentDo
Application.ThreadException
事件。我想这是针对WinForms的,那么WCF服务是否有ThreadException
事件?或者它们最终会出现在AppDomain.CurrentDomain.UnhandledException
?应用程序.ThreadException
事件只用于“处理在Windows窗体线程中发生的未经处理的异常”(强调添加,),因此它在WCF服务中没有太大帮助
您最好的选择是确实使用AppDomain.CurrentDomain.UnhandledException
。但是请注意,您不能阻止进程退出。此事件仅允许您在“系统默认处理程序向用户报告异常并终止应用程序”之前执行一些日志记录或错误报告
你们很多人也想要实现自己的。此外,请在您的应用程序中查看一些WCF错误处理最佳实践。看起来您需要实现IErrorHandler: 然后向ServiceHost注册处理程序:
看起来您还可以使用此处描述的自定义属性连接iErrorHandler:这取决于您的客户端框架。 WCF故障在客户端作为异常抛出,因此请像处理任何其他全局异常处理程序一样处理它们: Winforms使用
Application.ThreadException
WPF使用:
Application.DispatcherUnhandledException
正如Christian所说,这些仅适用于“GUI”线程上抛出的异常,但我认为WCF将在默认情况下封送双工服务上的回调