2011-09-01 173 views
5

我试图让一个WCF服务知道客户端何时断开连接。在双工WCF服务中处理客户端断开连接

看完这篇文章后wcf notification on disconnect我得到了一个测试项目工作。

客户端和服务器保持开放,直到我关闭客户端,那么OperationContext.Current.Channel.Closed事件似乎火低于行超时到期后。

<reliableSession enabled="true" ordered="true" inactivityTimeout="00:01:00" /> 

经过测试,这工作为我想要的,然后试图将其整合到我有一个更大的项目。

这看起来行为不同,因为即使客户端仍处于打开状态,OperationContext.Current.Channel.Closed甚至会在config <reliableSession ordered="true" inactivityTimeout="00:01:00" />中指定的时间后触发。

事情我已经注意到,不同的是,我不能指定启用=“真”的配置属性的事实。第二个项目使用WSDualHTTPBinding,而第一个使用WSHTTPBinding。

我的问题是,为什么是第二个项目以这种方式行事,我怎么能得到它的行为像第一个?

如果您需要任何代码文件或配置发布请让我知道,我会让他们直起来。

此致

+0

客户端运行的平台是什么? –

回答

2

HTTP协议是无状态的固有和纯粹请求/回复。 WSDualHTTPBinding的工作原理是,它在服务器和客户端上都打开通道,当服务器准备发送消息时,它将使用客户端托管的通道发送消息。因此,可能发生的情况是,客户端的连接被打开,一分钟内都听不到,这被检测为“非活动”,然后客户端关闭连接。我不确定你的要求是什么,但你可能想考虑切换到TCPBinding,因为这是一个有状态的连接。

客户端是否能够从服务器接收消息?消息是否定期发送?你确定客户端实际上保持连接打开吗?

+0

嗨杰森谢谢你的答案。我会很快回答你的问题并在这里发表。 – user589195

相关问题