WCF 客户端断线重连中遇到的问题

问题描述

最近在用WCF做一个项目,现在测试实现断线重连的问题,我直接将网络断开然后再启动,可以实现重连;问题来了:由于WCF服务程序里边有个方法:publicvoidUserAccept(){IUserCallBackcallBack=OperationContext.Current.GetCallbackChannel<IUserCallBack>();stringsessionid=OperationContext.Current.SessionId;OperationContext.Current.Channel.Closing+=UserChannel_Closing;DicHostSess.Add(sessionid,callBack);}

这个方法是客户端广播用的,与服务端连接成功后需要调用这个方法把这次会话加入字典,但是重连后调用这个方法就出错了,不知怎么解决?如果不调用这个方法就可以重连成功,但是广播就不起作用了,其他方法还可以用;客户端心跳如下:ThreadPool.QueueUserWorkItem(delegate{System.Timers.Timertime=newSystem.Timers.Timer();time.Interval=5000;time.Elapsed+=(s,ee)=>{try{DataHelper.userInfoService.Timer();}catch(Exception){try{this.Dispatcher.Invoke(newAction(()=>{DataHelper.userInfoService=user_DuplexChannel.CreateChannel();DataHelper.userInfoService.Accept();//就是这里出错}));}catch(Exceptionex){}}};time.Start();});

解决方案

本帖最后由 porenasckx 于 2014-12-31 12:30:57 编辑
解决方案二:
出错,出什么错,信息量太少了。
解决方案三:
引用1楼lc2737的回复:

出错,出什么错,信息量太少了。

报的错是:向一个无法连接的网络尝试了一个套接字操作;
解决方案四:
哪位大神帮忙解决下
解决方案五:
现在还有人用WCF来做这个啊,连微软都放弃了的技术

时间: 2024-08-26 05:49:47

WCF 客户端断线重连中遇到的问题的相关文章

基于TCP通信的客户端断线重连

转载:http://www.cnblogs.com/networkcomms/p/4304362.html 源码下载 在CS程序中,断线重连应该是一个常见的功能. 此处的断线重连主要指的是服务器端因为某种故障,服务器端程序或者系统进行了重新启动,客户端能够自动探测到服务器端掉线,并尝试重新进行连接 本程序基于来自英国的开源c#通信框架的networkcomms(2.3.1版本) 先看一下效果 初始状态: 当服务器端程序关闭后,客户端会自动探测到,并在客户端显示相关信息 然后,我们设定为每隔5秒重

关于socket tcp 断线重连

这个问题困扰过我几次,都没有来得及研究,今天研究一下. 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况 测试表明 (1)客户端已经连接,当服务端关闭程序时,客户端调用send函数发送失败,WSAGetLastError() 返回10054(远程主机强迫关闭了一个现有的连接)  (2)客户端已经连接,当客户端关闭程序时,服务端调用recv函数接收失败,WSAGetLastError() 返回10054(远程主机强迫关闭了一个现有的连接) ,这时

asp.net中WCF 客户端关闭带来的性能分析

这里的WCF异步调用是指单向非可靠异步调用,也就是你不知道调用是否成功,适用于性能高于可靠性的场合. 之前发布过一篇随笔WCF异步调用实战:OneWay+Asynchronous Operation,通过WCF服务端"单向(One-way)消息交换"+WCF客户端"异步信道调用(Asynchronous Operation)"实现快速的WCF异步调用. 但是,使用了一段时间,发现还是有些慢.今天实测了一下,调用代码如下:  代码如下 复制代码 var client

C# socket断线重连等异常情况处理

问题描述 请教大家一个问题啊,现在做一个数据采集的软件,就是一个GPS模块通过GPRS以TCP的方式发送数据,我这边用socket异步多线程的方式(因为技术原因,采用的是一个GPS模块对应一个端口的方式)接收数据,现在数据都能接收存入数据库,请问如何解决例如断线重连这类异常的情况呢,比如说网络断了重新连接的话就报错.第一次贴代码,大家见谅usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.

Winform 调用WCF客户端,所有服务端方法在运行的时候均找不到(编译没有问题)

  今天在开发过程中遇到了一个很恶心的问题,就是Form窗体ShowDialog的时候,直接报出下面的错误: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾. ************** 异常文本 ************** System.MissingMethodException: 找不到方法:"XXX.XXX.DataObject.SPI.DataObjectColumn[] XXX.XXX.WCFClient.WCFService.ServiceClient

通讯-C# 客户端连接服务器端如果断线重连

问题描述 C# 客户端连接服务器端如果断线重连 我现在设计的是一个客户端,连接了100台硬件,通讯协议采用的是Modbus tcp和FTP.如果中间一台硬件断线了,如何避免程序崩溃(我采用的是线程池)?还有断线后重新连接上后,程序能自动连接上,并上传数据?还望大神能够多多指教,初学很多东西都不懂. 解决方案 中间一台硬件断线了,如何避免程序崩溃(我采用的是线程池)? 用try catch或错误码做错误处理程序能自动连接上,程序主动去连接就可以了 解决方案二: 可以考虑用心跳包,时间长了重新连接

怎么把c++客户端嵌入到网页中?

问题描述 怎么把c++客户端嵌入到网页中? 今天突然看到六间房的主播服务,想问下他们是怎么把客户端嵌入到网页里的? 解决方案 ocx控件,,,,,,,,,,,,,,,com 解决方案二: 比较重的客户端会使用ActiveX技术,例如我们常见的基于Flash的各种视频播放.但是这个技术正在退出历史舞台,以后的应用会更多使用html5的技术来实现重的的交互.ActiveX的局限性在于它是厂商(微软)的标准,不是业界标准.所以平台支持性和浏览器支持性都不好,互联网时代的技术特别是去除对特定厂商的依赖,

WCF客户端运行时架构体系详解[上篇]

客户端调用WCF服务的方式不外乎有两种:其一.通过代码生成工具(比如SvcUtil.exe)导入服务的元数据生成服务代理相关的类型:其二.通过ChannelFactory<TChannel>创建服务代理对象.对于前者,生成的服务代理是一个继承自ClientBase<TChannel>的类型.对于这样一个服务代理对象,其内部本质上还是借助于ChannelFactory<TChannel>创建真正用于进行服务调用的代理对象.对于WCF客户端应用编程接口来说,ChannelF

WCF客户端运行时架构体系详解[下篇]

当基于某个终结点创建的ChannelFactory<TChannel>被开启的之后,位于服务模型层的客户端运行时框架被成功构建.站在编程的角度看ChannelFactory<TChannel>,它就是一个创建用于服务调用的服务代理对象的工厂.由于服务调用需要借助于服务代理来完成,我们很有必要从整个客户端运行架构层面来了解服务代理和基于服务代理的服务调用是如何实现的. 目录 一.服务代理是一个透明代理 二.服务调用的流程       操作选择       输入参数检验       序