Session_End()事件的触发取决于Session设置的保存时间,你如果等上一段时间就会触发这个事件了。

解决方案 »

  1.   

    我想不出有什么好的办法可以做到绝对的准确,因为服务端跟客户端不可能随时都保持着连接,客户端下线不可能马上就反馈到服务端,这中间会有一段时间,通过减少自动刷新的间隔时间,减小session保存时间,可以做到尽量精确。即使用Telnet一类工具连接服务端,在正常退出会发给服务端一个消息,但也不能处理客户端非正常退出,服务端也只能通过超时来判断。你可以做个实验,用两个帐号登陆csdn,查在线人员名单,然后让一个帐号下线,再刷新在线人员名单,下线的那个id还是在的。我所了解的网络知识仅限于此,不知道其他高人有没有什么好的办法。
      

  2.   

    也许我对这了解的太少。
    我对程序设置断点跟踪调试,结果发现在程序开始时Session_Start()确实调用了,所以计数器加一没错;但是退出时(直接按关闭窗口关闭浏览器),却未见执行Session_End(),所以计数器当然没有减一。
    我不知道直接关闭浏览器是否会触发Session_End()(因为我是菜鸟),如果不触发,应该在什么地方写代码处理这一事件呢?
    热心等待ing...
      

  3.   

    Session默认的时间是20分钟,在20 分钟后,你爱刷新就可以解决了。
      

  4.   

    看来我要好好关注!十分同情bigbigbug(Leon) !
      

  5.   

    谢谢大家的关注。我把Session时间调整为5分钟,在本机调试似乎还算好。
    真的就没有更好的解决方法了吗?
    仍然热心期待ing...
      

  6.   

    谢谢大家,欢迎大家到我做的网站来看看,网址是www.yzvod.com。新版的刚做好,可能还有不少bug,欢迎各位高手指正。