有没有办法排除无会话WCF通道的故障?

有没有办法排除无会话WCF通道的故障?,wcf,Wcf,如果我有一个会话较少的绑定,客户端通道是否会出现故障 在我的特定情况下,我有以下自定义绑定: <customBinding> <binding name="MyCustomBinding"> <mtomMessageEncoding/> <httpTransport/> </binding> </customBinding> 在客户端,我使用从ClientBase派生的默认生成的代理 我预计,如

如果我有一个会话较少的绑定,客户端通道是否会出现故障

在我的特定情况下,我有以下自定义绑定:

<customBinding>
  <binding name="MyCustomBinding">
    <mtomMessageEncoding/>
    <httpTransport/>
  </binding>
</customBinding>

在客户端,我使用从
ClientBase
派生的默认生成的代理

我预计,如果服务抛出一个未经处理的异常,而该异常不是
FaultException
,那么它将导致通道出现故障,并导致客户端代理出现故障。然而,情况并非如此——代理仍然保持在打开状态,并且在之后可以使用。我还试图违反绑定的一个超时——这也没有导致通道出现故障,客户端代理仍处于打开状态

是否存在导致客户端代理出现故障的情况

相关的:


当发生不可恢复的错误时,ClientChannel将转换为故障状态。在此状态下,将不再可用。恢复策略是创建一个新对象。主要原因是

  • 如果打开方法因任何原因失败,对象将转换为故障状态
  • 如果基于会话的通道检测到无法恢复的错误,它将转换为故障状态。例如,如果存在协议错误(即,它在无效时间接收协议消息)或远程端点中止会话,则可能发生这种情况
取自

基于会话的指传输会话。因此,任何未处理的异常都会导致通道故障,以防止在异常发生后再次使用代理。当没有传输级会话时,客户机可以在异常后继续使用代理,但不应再次使用

有关的详细信息。

您知道如何使用无会话频道导致“不可恢复错误”吗?您能否举一个例子,说明Open方法失败,客户端通道转换到故障状态?还有,为什么您会说“当没有传输级会话时,客户端可以在异常发生后继续使用代理,但不应该这样做”。为什么不呢?