WCF 异常与处理

WCF异常与实例管理
当服务实例出现异常时,WCF并不会关闭宿主进程,但错误可能会影响服务实例,同时还会影响到客户端继续使用代理(实际上是通道)访问服务的能力。准确的说,异常对于客户端与服务实例的影响与实例模式有关。

单调服务与异常
如果调用引发异常,那么紧跟在异常之后,服务实例会被释放,代理将在客户端抛出FaultException异常。在默认的情况下,所有服务抛出的异常(包括FaultException的派生类)会使通道发生错误。即使客户端捕获了异常,它也不能发出随后的调用,因为它们会引发一个CommunicationObjectFaultedException异常。此时,客户端只能关闭代理

会话服务与异常
无论使用何种WCF会话绑定,在默认情况下,所有异常(包括FaultException的派生类)都会终止会话。WCF将会释放实例,而客户端则获得一个FaultException的异常。即使客户端捕获了异常,也不能继续使用代理。客户端唯一可以安全执行的就是关闭代理,因为一旦参与会话的服务实例遇到了错误,会话就不能再使用了。

单例服务与异常
当我们调用单例服务时,如果遇到异常,单例实例不会终止,而是继续运行。在默认情况下,所有异常(包括FaultException的派生类)都会导致通道发生错误,客户端无法发出随后的调用,只能关闭代理。如果客户端包含了一个单例实例的会话,那么会话会终止。

posted on 2008-12-02 20:06  青竹园主  阅读(197)  评论(0编辑  收藏  举报