【发布时间】:2014-05-08 07:32:52
【问题描述】:
我有一个WCF 客户端需要关闭它与服务器的连接,以防超过 X 秒没有调用。
我的服务器有一个很长的inactivityTimeout,我无法更改(我可以做的唯一更改是在客户端)
阅读后我了解到我不能使用WCF's 配置来执行此操作,因此我想跟踪我的WCF 客户端手动进行的调用之间的时间。
如果客户端超过 X 秒没有拨打电话,我将关闭该连接。
我想了两种方法来实现它,但我不喜欢其中任何一种:
为我的所有函数添加一些代码,以节省调用时间。
使用
IClientMessageInspector- 在这种情况下,我需要将调用时间发送到将保存此数据的外部类,并及时调用客户端,以防客户端识别到对服务器的调用已经有 X 秒没有制作了。
我正在寻找一个简单的解决方案,例如在每次调用服务器时都会调用的事件,因此跟踪断开连接的所有时间逻辑都将发生在同一个类中(WCF's 客户端代码)或者一些使用WCF's 配置的方式,因此它会在超过 X 秒不活动的情况下自动关闭连接。
我使用的绑定是netTcpBinding 和reliableSession
关于如何实现它的任何想法?
【问题讨论】:
-
为什么要在通话之间保持会话打开?理想情况下,您会在每次通话后关闭连接。
-
系统中有一个部分我无法更改,这部分也让我保存一个打开的会话,直到我的客户关闭应用程序。我遇到的问题是我不知道客户端何时关闭了应用程序,所以如果连接空闲超过 X 秒,我会尝试为他关闭连接。
标签: c# wcf wcf-client