Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF服务上的Application.ThreadException?_C#_.net_Wcf_Exception Handling_Thread Exceptions - Fatal编程技术网

C# WCF服务上的Application.ThreadException?

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

在我的WCF服务上找不到要侦听的
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将在默认情况下封送双工服务上的回调