对于做B/S开发的人来说,统计在线的人数是个很重要的工作,一般的统计方法是利用Application保存在线人数。我今天要讲的也是用这个方法,但是,在这个方法上增加一点内容,就是,当用户直接关闭IE后,也要立刻将在线人数减少,而一般的方法是要等待Session过期后才能统计。好了,开始了。
1、首先,配置web.config
将Session的状态配置成如下,为什么我就不说了。

asp.net 在线人数统计<sessionState mode="InProc"></sessionState>

2、Global.asax的各个方法
asp.net 在线人数统计<%@ Application Language="C#" %>
asp.net 在线人数统计
asp.net 在线人数统计
<script runat="server">
asp.net 在线人数统计
asp.net 在线人数统计    
void Application_Start(object sender, EventArgs e) 
>

3、登陆成功后的人数加一
asp.net 在线人数统计  Application.Lock(); 
asp.net 在线人数统计                                
if (Application["OAS_Line_Counts"!= null)
                            Application.UnLock();
4、退出时减一
asp.net 在线人数统计 Session.RemoveAll();      
asp.net 在线人数统计 Session.Abandon();
//取消会话状态就会触发Session_End的事件
5、当关闭窗口时的统计(关键的地方)
如果页面是用框架结构做的,则里面不能用.net的控件,而且没有body,因此,我们只能调用其他的页面来实现。
我的方法如下:
asp.net 在线人数统计<script language="javascript" type="text/javascript">
asp.net 在线人数统计function PageClose()
{
         //这样写,主要是防止刷新也触发该事件
asp.net 在线人数统计     
if(event.clientX>document.body.clientWidth-30 && event.clientY<0 || event.altKey) //event.altKey表示按下了Alt按纽
>
PageCloseCount里调用的方法
asp.net 在线人数统计 public void PageClose()
System.Web.HttpContext.Current.Session.RemoveAll();      
  System.Web.HttpContext.Current.Session.Abandon();
asp.net 在线人数统计   }

asp.net 在线人数统计   

如果不是用框架做的就要简单些了,可以不需要调用其他的页面来执行方法,用他自己就可以了。
部分代码:
asp.net 在线人数统计     <script language="javascript" type="text/javascript">
asp.net 在线人数统计function PageClose()
>

按纽里的方法同上面一样,也是取消会话。

这个方法我测试了,好象基本上可以,但是又好象有时没调用到,好象是和用户点击按纽的位置有关。

 

相关文章: