我找不到要在我的Application.ThreadException
服务上侦听的WCF事件。我想这是针对WinForms的,那么是否存在针对ThreadException
服务的WCF事件呢?或者他们最终会被送进AppDomain.CurrentDomain.UnhandledException
发布于 2012-03-09 08:49:19
Application.ThreadException
事件仅用于“处理在Windows Forms线程中发生的其他未处理的异常”(强调添加了,MSDN),因此它在WCF服务中没有太大帮助。
你最好的选择就是使用AppDomain.CurrentDomain.UnhandledException
。但是请注意,您不能阻止该进程退出。此事件仅允许您在“系统默认处理程序向用户报告异常并终止应用程序”(MSDN)之前执行一些日志记录或错误报告。
您可能还想实现自己的IErrorHandler
。同时,在this blog entry上查看一些WCF错误处理的最佳实践。
发布于 2012-03-09 08:50:39
看起来您需要实现IErrorHandler:http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx
然后用你的ServiceHost注册你的处理程序:http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.channeldispatcher.errorhandlers.aspx
看起来您还可以使用如下所述的自定义属性来连接IErrorHandlers:http://msdn.microsoft.com/en-us/library/ms751439.aspx
发布于 2012-03-09 09:16:22
这取决于您的客户端框架。WCF错误在客户端作为异常抛出,因此可以像处理任何其他全局异常处理程序一样处理它们:
Winforms使用
Application.ThreadException
WPF使用:
Application.DispatcherUnhandledException
作为基督教国家,这些只针对抛出在"GUI“线程上的异常,但WCF将在默认情况下将双工服务上的回调编组到这些回调。
https://stackoverflow.com/questions/9631095
复制