问题描述
最近在用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来做这个啊,连微软都放弃了的技术