首页 新闻 会员 周边

WCF的问题:要实现通信一旦中断就开始定时重连,直到恢复通信。该怎么设置?

0
悬赏园豆:10 [已解决问题] 解决于 2011-06-17 19:12

client从server以秒为间隔获取数据。如果server关闭后再启动,则client。state一直等十分钟都是opened状态,请问怎么使它尽快的改变呢。我改了client和host的receivetimeout为10秒,可是没有作用。

刚接触wcf的菜鸟请达人解惑。

问题补充:

我用的绑定是WSDualHttpBinding(WSDualHttpSecurityMode.None).

实际情况是,绑定后服务端会每秒向客户端发送数据。为了使服务端关闭(意外或非意外)后,客户端能在服务端重启后及时重连。我在客户端加了定时器30秒检查一次客户端状态,如果不是opened,客户端就重新open。

所以我需要一种方法使客户端的状态能及时的自动修正。

或者有别的方法使客户端及时重连服务端的也行。

mosie的主页 mosie | 初学一级 | 园豆:140
提问于:2011-06-16 19:04
< >
分享
最佳答案
0

receivetimeout只会影响接收响应时的超时,也就是说,如果你的sendtimeout很长,server还没收到client发来的消息时,receivetimeout是不启作用的。

另外,在某些绑定下,server重启并不一定会破坏物理链路,所以client会以为自己和server仍然连通的。

所以,请贴出你的绑定配置和你客户端的调用代码。

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2011-06-17 09:44
问题已补充,请专家再看看。
mosie | 园豆:140 (初学一级) | 2011-06-17 13:20
@mosie:不能通过State来判断连接的有效性,应该通过调用一次服务操作确定连接是否存活。因此你可以有两种选择模式:一是客户端每隔30秒检测一次服务是否有数据返回;二是主动调用一次服务上的方法,返回与你的客户端匹配的回调实例是否存活;
Launcher | 园豆:45045 (高人七级) | 2011-06-17 17:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册