我写了一个BS的应用程序,使用者很多,如何有效的计算机正在使用的人数呢?
我用了
protected void Application_Start(Object sender, EventArgs e)
{
            Application["counter"] = 0;
}
 
protected void Session_Start(Object sender, EventArgs e)
{
Application.Lock();
Application["counter"] = (int)Application["counter"] + 1;
Application.UnLock();
}
但是,计算基本不准

解决方案 »

  1.   

    http://blog.csdn.net/cncxz/archive/2005/07/18/427778.aspx
      

  2.   

    用哪个当然不准,刷新后就更改了。
    要用sessionId
    然后判断它是否已经失效或者用户是否已经关闭了窗体
    如果是就删除该sessionId
    最后统计不同的sessionId数量,sessionId未失效前是防刷新的。
      

  3.   

    记录IP之后统计日IP不就成了吗?
      

  4.   

    Session_End 还需要加入Application减少的代码。
    因为Session_End只有在Session Timeout 或者 Session Abandon的时候才会触发,而且即使你在用户退出的页面中加入了 Abandon方法,在线人数也不会太准确(并不是每个人都会点“退出“按钮,比如直接关闭浏览器),视Session Timeout的设定置不同会有误差,默认在20分钟。
      

  5.   

    因为session有一个释放的时间呀,默认是20分钟,所以关了IE后还是会在的,结果是你的计算机不准,其实是对的呀
      

  6.   

    to:: undercontrol(兵临城下) 
    你那个具体是怎么实现的,写点代码来look下