天极论坛

统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率。现在,我们就介绍一个简单明了的方法来统计在线用户的多少,该方法的特点就是充分的利用了ASP.NET的特点,结合global.asax文件,用Application和Session巧妙的实现在线用户的统计,由于程序中只用到一个Application,所以,程序占用系统资源几乎可以忽略不及,当然,这也是网站管理者最关心的问题之一。

  一、用户显示页面的使用

  首先,我们来看看怎样现实当前网站的访问用户数量,程序代码如下:

<%@ Page Language="c#" debug="true" %><html><head><SCRIPT LANGUAGE="c#" RUNAT="server">private void Page_Load(object sender, System.EventArgs e){ Visitors.Text = "本站当前有: <b>" + Application["user_sessions"].ToString() + "" + "</b> 位访问者 !";}<title>在线用户</title></head><body><asp:label id="visitors" runat="server" /><br></body></html>

  可以看出,以上的程序特别简单,就是调用Application。当然,我们不必要专门设计一个页面来显示在线用户数量,在网站的任何页面,我们都可以直接调用Application("user_sessions").ToString()来显示当前用户数量。

  二、global.asax文件实现

  global.asax文件的作用我们自不必说,现在,我们直接来看统计当前在线用户数量如何实现:

<script language="c#" runat="Server">protected void Application_Start(Object sender, EventArgs e){Application["user_sessions"] = 0;}protected void Session_Start(Object sender, EventArgs e){Application.Lock();Application["user_sessions"] = (int)Application["user_sessions"] + 1;Application.Unlock();}protected void Session_End(Object sender, EventArgs e){Application.Lock();Application["user_sessions"] = (int)Application["user_sessions"] - 1;Application.Unlock();}</script>

  以上代码很容易理解,当网站开始服务的时候(Application开始的时候),程序设置Application["user_sessions"]为零,然后,当用户进入网站(Session开始的时候)的时候,锁定Application,然后,将application("user_sessions")加一,用户退出网站的时候,application("user_sessions")减一。这样,就很巧妙的实现了在线用户的统计。

  三、一点讨论

  以上的统计,简明扼要,程序很容易实现。但是,如果我们仔细考虑,发现该方法有一定的局限,统计出来的在线用户数量可能稍微有点误差。因为我们在以上程序中,是根据用户建立和退出会话(Session)来实现在线人数的加减的,而我们知道,如果用户没有关闭浏览器,而进入另外一个网站,那么,这个会话在一定的时间内是不会结束的,这个时间我们可以通过TimeOut来设置,一般的,我们设置为20分钟。所以,在用户数量统计上面,还是存在一点误差的。

  另外,我们知道,在ASP中,如果用户将浏览器上面的Cookies设置为“禁用”,那么,Session就不能再被传递,显然,这样设置让以上的统计程序无能为力。不过,在ASP.NET中我们有解决方法,在config.web文件中,我们将<sessionstate cookieless="false" />设置为true就可以了,也就说,不使用Cookies也可以传递Session。这样,我们的程序就可以在不同的访问者环境中顺利运行。

  四、总结

  以上的统计程序特别简单,但是,细节的东西我们不一定想到,这也是我们在编程中需要多一点考虑的。

ASP.NET中在线用户统计相关推荐

  1. WhoIsOnline ;) - 解读CNForum源码中在线用户统计

    原文:http://www.cnblogs.com/andrewbao/archive/2005/01/05/87061.html 下载CnForumsBeta1(今天发现CnForum1.2测试版本 ...

  2. php数据库中统计人数用什么方法,在PHP中处理用户统计信息的最佳方法是什么

    我如何处理 PHP中的用户统计信息? 我可以选择两种明显的方法.两者都有缺陷. >必要时选择MySQL COUNT.这里的缺陷是,如果你要计算很多行,那么它可能会很慢,特别是当你必须在看似每个页 ...

  3. ASP.NET中网站访问量统计方法

    一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间(IP_DateTime),些表的信息 ...

  4. Springboot集成websocket实现消息推送和在线用户统计

    一.HTTP 说到websocket首先要说Http,Http大家都知道是一个网络通信协议,每当客户端浏览器需要访问后台时都会发一个请求,服务器给出响应后该连接就会关闭,请求只能有客户端发起,服务端是 ...

  5. Asp.net中防止用户多次登录的方法

    在web开发时,有的系统要求同一个用户在同一时间只能登录一次,也就是如果一个用户已经登录了,在退出之前如果再次登录的话需要报错. 常见的处理方法是,在用户登录时,判断此用户是否已经在Applicati ...

  6. java和redis统计在线,在SpringBoot中使用Redis的zset统计在线用户信息

    统计在线用户的数量,是应用很常见的需求了.如果需要精准的统计到用户是在线,离线状态,我想只有客户端和服务器通过保持一个TCP长连接来实现.如果应用本身并非一个IM应用的话,这种方式成本极高. 现在的应 ...

  7. [转载]Asp.Net在线用户列表的開發匯總

    这是转载的别人的一篇,解决了困扰我已久的问题,虽然文章里少了两张图,但是不影响阅读. 1.在线用户列表的实现 在ASP时代,要实现一个网站的在线用户列表显示功能的惯用做法是修改global.asa文件 ...

  8. 如何实现ASP.NET中网站访问量的统计

    下面介绍如何进行ASP.NET中网站访问量的统计. 一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Sr ...

  9. 金和C6协同办公中对在线用户的判断

    在金和C6版本中,在线用户的判断和IOAS版不同,在C6的数据库中有一个users表,longinstatus字段用于用户是否在线,为1认为在线,为0认为不在线,所以可用一条update语句来实现全体 ...

最新文章

  1. MOSS publishing功能:创建页面到子文件夹
  2. java自动雨刷系统,安装雨量传感器实现自动大灯/自动雨刷(详细方法)多图!!
  3. sparksql(3)——dataframe导入json-spark.read.json()
  4. HDU 6889 Graph Theory Class(CCPC网络赛)
  5. android自定义adapter怎么优化,Android必学-BaseAdapter的使用与优化
  6. 如何快速看懂一家公司,判断出公司的价值?投资和创业的必备基础知识
  7. SysTick系统定时器(功能框图和优先级配置)
  8. linux 添加deepin ppa,Deepin 添加PPA源问题
  9. bash shell seq的用法
  10. 双方确认函_影片份额转让合同约定第一出品方出具确认函后合同生效,未出具而受让方支付投资款的,合同也生效...
  11. 大型公司网路架构浅谈
  12. 制作u盘winpe启动盘_微PE工具箱 (WePE),绿色纯净的WinPE启动盘/U盘重装系统工具...
  13. UE4 打包之后Mesh没有材质问题
  14. Android Transition
  15. 又是一年冬至,最喜欢吃冬至茧了
  16. Delphi中资源文件使用详解(转载)
  17. Web大学生网页作业成品:个人博客主页 (纯HTML+CSS代码)
  18. 喜欢变形金刚的小可爱看过来!
  19. android北京工资待遇,【北京京东工资】android开发工程师待遇-看准网
  20. 清华大学生反CNN网站被黑 创始人呼吁提供技术支援

热门文章

  1. python-pcl官网 应用、特征、过滤Filter教程翻译
  2. windows用 tree命令查看目录文件夹结构
  3. 深入浅出神经网络原理
  4. 使用回调函数实现图像阈值分析。程序运行后在屏幕中输入阈值,通过改变滑动条实现不同类型的二值化图。
  5. 【机器视觉案例】(6) AI视觉,距离测量,自制AI小游戏,附python完整代码
  6. 【机器学习入门】(3) 朴素贝叶斯算法:多项式、高斯、伯努利,实例应用(心脏病预测)附python完整代码及数据集
  7. JAVA获取局域网内对应IP电脑的MAC地址(物理地址)
  8. 调试视频网页js脚本的方法
  9. Blender从头到尾创建低多边形角色学习教程 Low Poly Characters – Blender Bitesize Course
  10. Blender液体烟与火VFX特效制作教程 Blender VFX Liquid Smoke Fire