WCF - 如果在连接客户端时关闭,则关闭双工ServiceHost阻止CloseTimeout持续时间

时间:2009-10-29 12:47:56

标签: .net wcf servicehost duplex-channel

我有一个Windows服务,它承载三个不同的双工WCF通道。客户端可以连接以通过其回调合同向他们发送更新。基本上有三个pub-sub频道。

此服务在连接客户端时需要很长时间才能退回。对ServiceHost.Close的调用需要10秒才能返回(因此该服务需要30秒以上才能停止。)事实证明,配置中的closeTimeout为10秒。更改此值表示这是问题的原因。

我需要做什么才能及时关闭频道?我不喜欢有些东西超时的想法。我可以打电话给Abort,但似乎必须有更好的方法。我之前没有在非双工通道上看到过这种情况,所以假设它与双工通信有关。

理想情况下,会立即通知客户端该频道出现故障,以便用户可以立即看到更新已停止。

2 个答案:

答案 0 :(得分:1)

“理想情况下,会立即通知客户端该频道出现故障,以便用户可以立即看到更新已停止。”

WCF客户端实例包含您可以订阅的事件:

  • 断陷
  • 开放
  • 开幕。

双工频道因任何原因停止后,会立即引发故障事件。

我想知道为什么你的服务主持人需要30多秒才能关闭。你能提供一些示例代码吗?

答案 1 :(得分:0)

可能最好的方法是通知客户端(你有双工,所以你可以)并让客户关闭频道。