WCF断线重连后服务端如何清理会话

E次奥 2015-01-08 04:53:34

WCF双工的时候,在服务端用Dictionary键值对保存会话SessionId和CallBack接口,当客户端登陆时会添加当前会话到集合中;

问题是:

客户端断网重连后服务端会重新添加一条会话,那么重连之前的会话还在集合中,怎么清理?
...全文
192 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-01-08
  • 打赏
  • 举报
回复
心跳应该是客户端给服务端发1个字节的数据,而不是服务端来管理那么多心跳 服务端只要定期判断"最后一次接收到数据包的时间"就好了
E次奥 2015-01-08
  • 打赏
  • 举报
回复
引用 2 楼 Z65443344 的回复:
这是个靠谱的办法 客户端断线有时会抛异常出来,但是有时不抛异常 尤其是使用短连接的时候这种方式行不通 还是需要客户端心跳确定在线状态,服务端定时清理
假如一个ServiceHost有多个会话集合,就需要多个心跳来判断了; 我现在有个想法,我这个项目这个首先需要登录,我把用户编号(数据库唯一的)当成Key存进去,每次重连的时候判断是否存在这个编号的会话,如果存在先删除在添加新的;不知可行否?
E次奥 2015-01-08
  • 打赏
  • 举报
回复
引用 1 楼 rtdb 的回复:
Session里记录最后使用时间 定期清理超时未活动的
那这个会话假如现在没有用,但有客户端连接着,现在服务端把这个会话清理了,客户端在次需要用的时候又要重新连接了?
於黾 2015-01-08
  • 打赏
  • 举报
回复
这是个靠谱的办法 客户端断线有时会抛异常出来,但是有时不抛异常 尤其是使用短连接的时候这种方式行不通 还是需要客户端心跳确定在线状态,服务端定时清理
rtdb 2015-01-08
  • 打赏
  • 举报
回复
Session里记录最后使用时间 定期清理超时未活动的

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧