我的sesssion 模式为StateServer 所以不执行 Session_End(object sender, EventArgs e) 事件。所以只增加在线用户不减。
想问什么?
然后呢???
你想问什么呢???????
改为InProc 模式?
好像这种方法做出来的效果不怎么好
等高手出来
你可以把登录用户的信息保存在数据表里,当一个用户登录后,定时更新登录信息表中的时间字段,这样如果这个用户退出了,就算不是正规退出,直接关闭网页了,那这个时间字段就不会得到更新。你可以判断把时间间隔长的用户登录信息删除掉。这样也可以来统计在线人数
InProc 模式 不可以,存在超时的问题,数据不太准确。
在stateserver模式下,你可以定义一个静态的全局变量,aplication["online"],在登录时为application["online"]自动加一,在系统的主页面,要捕捉ie关闭或者 退出系统的动作,直接application["online"]减一。
如果在线人数统计需要详细的信息,例如谁在线,可以定义一个静态的全局变量list,存入已经登录人的客户id,并且设置固定时间定期检查session会话数量是否和list中数量一致,不一致用session会话更新这个list。