Application session 方法就不用提了.简单的统计人数就够了。
  再浏览过程中 用户非正常关闭IE的情况就不考虑了在session_end 中解决。
  现在就是 当用户浏览页面的时候  直接关闭IE窗口。 已经可以在js中捕获关闭事件。 在事件中我该怎么去处理服务端数据表  也就是在Datatable XXX表的删除本sessionid的记录注 在Application_start 中就建立Datatable xxx 存储用户信息表 session_start中 就往表里面插入记录。用seesionid做唯一主键。

解决方案 »

  1.   

    大型在线统计方案:
    当用户进入web时,生成一个全球唯一的GUID,并保存在cookies里,过期时间为浏览器进程,在客户端(web底部)放一个隐藏的xmlhttp对象,定时(假设60秒)调用在线服务器的webservice(也可以做一个隐藏的框架post数据),更新用户最新在线时间(服务器当前时间)。
    在线服务器为一独立服务器,服务器上部署一个webservice(也可以做一个隐藏的框架)和一个控制台程序,通过webservice接收过来的值把用户的GUID、IP、最新在线时间写入hashtable里。控制台程序,定时(假定60秒)执行一次,删除hashtable中用户的时间与当前时间相隔61秒的用户,那么判断在线用户的最大误差是59秒,如果设定的更新时间越短,误差越小,当然这也会造成服务器压力会越大。这样操作的好处是hashtable的数据操作效率高;定时更新时间能避免用户非法操作(如断电)而统计不到数据;GUID是全球唯一码,避免了使用IP、MAC地址、硬盘序列号的重复。