我有一个Windows服务,它承载三个不同的双工WCF通道。客户端可以连接以通过其回调合同向他们发送更新。基本上有三个pub-sub频道。
此服务在连接客户端时需要很长时间才能退回。对ServiceHost.Close
的调用需要10秒才能返回(因此该服务需要30秒以上才能停止。)事实证明,配置中的closeTimeout
为10秒。更改此值表示这是问题的原因。
我需要做什么才能及时关闭频道?我不喜欢有些东西超时的想法。我可以打电话给Abort
,但似乎必须有更好的方法。我之前没有在非双工通道上看到过这种情况,所以假设它与双工通信有关。
理想情况下,会立即通知客户端该频道出现故障,以便用户可以立即看到更新已停止。
答案 0 :(得分:1)
“理想情况下,会立即通知客户端该频道出现故障,以便用户可以立即看到更新已停止。”
WCF客户端实例包含您可以订阅的事件:
双工频道因任何原因停止后,会立即引发故障事件。
我想知道为什么你的服务主持人需要30多秒才能关闭。你能提供一些示例代码吗?
答案 1 :(得分:0)
可能最好的方法是通知客户端(你有双工,所以你可以)并让客户关闭频道。