我写了一个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();
}
但是,计算基本不准
我用了
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();
}
但是,计算基本不准
要用sessionId
然后判断它是否已经失效或者用户是否已经关闭了窗体
如果是就删除该sessionId
最后统计不同的sessionId数量,sessionId未失效前是防刷新的。
因为Session_End只有在Session Timeout 或者 Session Abandon的时候才会触发,而且即使你在用户退出的页面中加入了 Abandon方法,在线人数也不会太准确(并不是每个人都会点“退出“按钮,比如直接关闭浏览器),视Session Timeout的设定置不同会有误差,默认在20分钟。
你那个具体是怎么实现的,写点代码来look下