处理双工WCF服务中的客户端断开连接
本文关键字:客户端 断开 连接 服务 WCF 处理 | 更新日期: 2023-09-27 18:07:19
我试图让WCF服务知道客户端何时断开连接。
在阅读了这篇关于断开连接的wcf通知后,我设法让一个测试项目工作。
客户端和服务器保持打开,直到我关闭客户端,然后OperationContext.Current.Channel.Closed事件似乎在下面的超时过期后触发。
<reliableSession enabled="true" ordered="true" inactivityTimeout="00:01:00" />
测试后,这是我想要的,然后我试图将它集成到一个更大的项目,我有。
这似乎表现得不同,因为OperationContext.Current.Channel.Closed甚至在配置<reliableSession ordered="true" inactivityTimeout="00:01:00" />
中指定的时间之后触发,即使客户端仍然打开。
我注意到的不同之处在于,我不能在配置中指定enabled="true"属性。另外,第二个项目使用WSDualHTTPBinding,而第一个项目使用WSHTTPBinding。
我的问题是为什么第二个项目的行为是这样的,我怎么能让它的行为像第一个?
如果你需要任何代码文件或配置张贴请让我知道,我会得到他们直接。
亲切的问候火山灰
HTTP协议本质上是无状态的,纯粹是请求/应答。WSDualHTTPBinding的工作原理是,它在服务器和客户端上打开通道,当服务器准备好发送消息时,它将使用由客户端托管的通道来发送消息。因此,可能发生的情况是,客户端上的连接打开了,一分钟内什么都没有听到,这被检测为"非活动",然后客户端关闭了连接。我不确定您的需求是什么,但您可能要考虑切换到TCPBinding,因为这是一个有状态连接。
客户端是否能够接收来自服务器的消息?邮件是否定期发送?您确定客户端实际上保持连接打开吗?