ASP.NET中在线用户统计
统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率。现在,我们就介绍一个简单明了的方法来统计在线用户的多少,该方法的特点就是充分的利用了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文件的作用我们自不必说,现在,我们直接来看统计当前在线用户数量如何实现:
protected void Application_Start(Object sender, EventArgs e)
{
Application["user_sessions"] = ;
}
protected void Session_Start(Object sender, EventArgs e)
{
Application.Lock();
Application["user_sessions"] = (int)Application["user_sessions"] + ;
Application.Unlock();
}
protected void Session_End(Object sender, EventArgs e)
{
Application.Lock();
Application["user_sessions"] = (int)Application["user_sessions"] - ;
Application.Unlock();
}
以上代码很容易理解,当网站开始服务的时候(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中在线用户统计的更多相关文章
- ASP.net中网站访问量统计方法代码(在线人数,本月访问,本日访问,访问流量,累计访问)
一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime),些表的信 ...
- ASP.net中网站访问量统计方法
仅共学习 一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime) ...
- Java 实现网站当前在线用户统计
1. import java.util.HashSet; import javax.servlet.ServletContext; import javax.servlet.http.HttpSess ...
- 关于Asp.Net中避免用户连续多次点击按钮,重复提交表单的处理
Web页面中经常碰到这类问题,就是客户端多次点击一个按钮或者链接,导致程序出现不可预知的麻烦. 客户就是上帝,他们也不是有意要给你的系统造成破坏,这么做的原因很大一部分是因为网络慢,点击一个操作之后, ...
- Asp.net中防止用户多次登录的方法
在web开发时,有的系统要求同一个用户在同一时间只能登录一次,也就是如果一个用户已经登录了,在退出之前如果再次登录的话需要报错. 常见的处理方法是,在用户登录时,判断此用户是否已经在Applicati ...
- 如何实现ASP.NET中网站访问量的统计
如何实现ASP.NET中网站访问量的统计 2009-07-30 15:50 佚名 网翼教程网 字号:T | T 本文介绍了如何在asp.net中进行网站访问量的统计. AD:51CTO 网+ 第十二期 ...
- ASP.NET MVC使用SignalR统计在线用户人数
学到新东西就记录一下.也许正好有人需要~~~~~~ 由于需要记录当前在线用户,emmmm又是没做过的... 本来想用数据库的形式,但是想想这么简单的功能百度肯定有.遨游一波百度,有所收获.... 虽然 ...
- ASPNET中实现在线用户检测(使用后台守护线程)
启动后台线程可以用下面的语句:CheckOnline online=new CheckOnline(); 用户可以将它放到GLOBAL.ASAX中,我是没有了,只放到了一个ASPX文件中做简单的测试. ...
- 使用 Redis 统计在线用户人数
在构建应用的时候, 我们经常需要对用户的一举一动进行记录, 而其中一个比较重要的操作, 就是对在线的用户进行记录. 本文将介绍四种使用 Redis 对在线用户进行记录的方案, 这些方案虽然都可以对在线 ...
随机推荐
- (转) CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)
从SVN上down下来的程序,编译报了一大堆的错,发现是缺少引用,但是明明引用了,后来打开引用,发现system.web.mvc这个引用打着叹号,如图, 后来重新引用了本机的system.web.mv ...
- ViewPager欢迎页
布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...
- 解决PL/SQL Dev连接Oracle弹出空白提示框
第一次安装Oracle,装在虚拟机中,用PL/SQL Dev连接远程数据库的时候老是弹出空白提示框,网上找了很久,解决方法也很多,可是就是没法解决我这种情况的. 没办法,只能自己研究,经过大概一天时间 ...
- bootstrap-datetimepicker使用记录
版本:V2.0 1.bootstrap-datetimepicker.min.css 2.bootstrap-datetimepicker.min.js 3.bootstrap-datetimepic ...
- java下io文件切割合并功能
package cn.stat.p1.file; import java.io.File; import java.io.FileInputStream; import java.io.FileNot ...
- 【转】【C/C++】内存分配函数:malloc,calloc,realloc,_alloca
转自:http://www.cnblogs.com/particle/archive/2012/09/01/2667034.html#commentform malloc: 原型:extern voi ...
- 菜鸟做HTML5小游戏 - 翻翻乐
记录下开放过程.做小游戏开发,又要跨平台,flash又不支持iPhone,html5是最好的选择. 先看看最后效果: 好了,开始demo. 1.准备工作: 图片素材(省略...最后代码一起打包) 了解 ...
- HTML&CSS基础学习笔记1.11—导航栏
上文我们介绍到的<a>标签,由于<a>标签可以用来跳转,所以我们可以拿<a>标签来生成网页的导航栏. 其实在实际运用中,<a>标签就经常会被用来生成导航 ...
- C++ 继承和包含的区别?
在<代码大全>这本书的第六章中提到了有关包含与继承的一些原则,我摘取如下: 一.包含("has a") 包含表示一个类含有一个基本数据元素或对象.包含是面向对象编程的主 ...
- OCR中的倾斜矫正
电面中被问到了做的LPR,简单的介绍了下后又问到了关于如何矫正倾斜角的问题.答得比较含糊,所以今天来补充一下. 倾斜矫正的方法有很多种,包括基于Hough变换的矫正,基于字符投影的倾角矫正,常规线性角 ...