如果我有无会话绑定,那么客户端频道是否会出现故障?
在我的具体情况下,我有以下自定义绑定:
<customBinding>
<binding name="MyCustomBinding">
<mtomMessageEncoding/>
<httpTransport/>
</binding>
</customBinding>
在客户端,我使用的是ClientBase<T>
派生的默认生成代理。
我期待如果服务抛出一个未处理的异常,而不是FaultException
它会导致通道出现故障,并使客户端代理也出错。但事实并非如此 - 代理仍处于开放状态,之后可以使用。我也试过违反Binding的一个超时 - 这也没有使通道出错并且客户端代理仍处于打开状态。
是否存在会导致客户端代理出现故障的情况?
相关:
答案 0 :(得分:-1)
当发生不可恢复的错误时,ClientChannel会转换到Faulted-State。在这种状态下不再可用。恢复策略是创建一个新对象。主要原因是
- 如果打开方法因任何原因失败,对象将转为故障状态。
- 如果基于会话的频道检测到无法恢复的错误,则会转换为故障状态。例如,如果存在协议错误(即,它在无效时间收到协议消息)或者远程端点中止会话,则会发生这种情况。
基于会话的引用传输会话。因此任何未处理的异常都会使通道出错,以防止在异常后再次使用代理。当没有传输级会话时,客户端可以在异常后继续使用代理,除了它,它不应该。(/ p>
的更多信息