我开发了一个用于与数据库通信的WCF服务。我从我的WPF应用程序中使用此服务来访问数据库。将来,我们也计划拥有一个Web客户端。目前,我们将服务作为Windows服务托管在服务器中。WCF服务异常处理
我在这里的问题是,如果在服务器意味着任何异常,我想通知客户端的异常。另外,我不希望这个服务被杀死。我如何实现这一目标?
例如:如果数据库脱机,当服务尝试访问该数据库时,它会引发异常。我没有使用try catch处理这些异常。这些类型的未处理的异常导致我的WCF服务关闭。
我开发了一个用于与数据库通信的WCF服务。我从我的WPF应用程序中使用此服务来访问数据库。将来,我们也计划拥有一个Web客户端。目前,我们将服务作为Windows服务托管在服务器中。WCF服务异常处理
我在这里的问题是,如果在服务器意味着任何异常,我想通知客户端的异常。另外,我不希望这个服务被杀死。我如何实现这一目标?
例如:如果数据库脱机,当服务尝试访问该数据库时,它会引发异常。我没有使用try catch处理这些异常。这些类型的未处理的异常导致我的WCF服务关闭。
你可以为你的WCF服务方法创建一个FaultContract。当服务器发生异常时,可以引发FaultException。客户端可以捕获这个FaultException并处理它。
我希望链接有帮助。 http://www.codeproject.com/Articles/26320/WCF-Error-Handling-and-Fault-Conversion
你不要有做任何事情。如果发生异常,服务器不会被终止。客户端将收到异常。
如果需要,可以使用IErrorHandler
接口添加错误处理,并且应该使用错误合约,以便客户端知道他们是否得到预期的或意外的错误。在这里看到更多的细节:http://msdn.microsoft.com/en-us/library/gg281715%28v=vs.110%29.aspx
fejesjoco:我将服务作为Windows服务托管,如果发生异常,服务将停止。 – petchirajan
那么这不是WCF的错,而是别的。 WCF捕获服务中的异常,所以它不可能是原因。 – fejesjoco
fejesjoco:我在使用Try..Catch的服务中处理异常,并从catch块中抛出FaultException来通知客户端。谢谢你的帮助。 – petchirajan
你可以发布一些代码来展示当你抛出异常时你如何停止你的服务吗? – MattC