`
varsoft
  • 浏览: 2435384 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

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文件的作用我们自不必说,现在,我们直接来看统计当前在线用户数量如何实现:

<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实现在线人员实时统计显示

    ASP.NET实现在线人员实时统计显示 做了一个简单的在线人员显示的功能,总结了一下,思路如下: 1、定义一个全局的内存来作为在线人员列表 2、通过实时判断用户Session值,来判断某个用户的登录或离线 3、对于用户的...

    C# ASP.NET 模块 - 网站统计分析

    ☆ 功能如下:☆ 时段分析: 日时段分析、月时段分析; 回访统计: 日回访统计、月回访统计; 地域分析: 日地域分析、月地域分析; 客户端分析: 日客户端分析、月客户端分析;

    .NET计数统计系统源码合集

    资源名称:.NET计数统计系统源码合集资源目录:【】Afritxia在线用户统计、在线编辑器、验证码图片【】Asp.net简单防刷新图片计数器源码VS2005 SQL2000【】CCSTAT多用户流量统计系统v1.3【】CCSTAT多用户流量统计...

    实时用户在线列表和在线统计实例(asp.net)

    最近根据其它项目整合的一个在线用户列表和在线用户统计...在线用户列表显示有分页功能..可以区分关闭浏览器的的退出方式..

    ASP.NET入门到精通,1到2电子书

    第3篇【应用开发】主要讲解银行在线支付系统、在线投票统计系统、邮件收发系统、网站流量统计系统、用户验证系统、广告生成系统及文件批量上传系统等7个应用系统的开发;第4篇【项目实战】包括实战前的项目规划、...

    asp.net登录页面设计

    在Visual Studio中创建ASP.NET项目 所有页面要求采用代码后置的编码方式 在项目中添加登录页面login.aspx,效果见下图 实现没有登录重定向到登录页面login.aspx 用户首次登录网站给出用户名和密码的输入...

    ASP.net从入门到精通 光盘源码

    包括ASP.NET 2.0开发入门、C#语言基础、ASP.NET的内置对象、ASP.NET 2.0 Web常用控件、数据验证技术、母版页、主题、数据绑定、使用ADO.NET操作数据库、数据控件、站点导航控件、Web用户常用控件、ASP.NET 2.0缓存...

    ASP.NET源码——Afritxia在线用户统计、在线编辑器、验证码图片.zip

    ASP.NET源码——Afritxia在线用户统计、在线编辑器、验证码图片.zip

    asp.net知识库

    ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算表达式类的原理及其实现 #实现的18位身份证...

    asp.net网络开发指南(源代码)

    1.搭建ASP.NET开发环境 2.C#语言基础 3.ASP.NET的基本对象 4.应用ADO.NET编程 5.进一步使用ADO.NET编程 6.导航与控件 7.用户输入验证 8.网络用户管理系统 9.网络硬盘 10.留言板 11.网络邮件管理系统 12.网站流量统计...

    ASP.NET.4揭秘

    9.3 在sqldatasource控件中使用asp.net参数308 9.3.1 使用asp.net参数对象308 9.3.2 使用asp.net的controlparameter对象311 9.3.3 使用asp.net的cookieparameter对象315 9.3.4 使用asp.net的formparameter对象317 ...

    Asp.net在线考试系统源码

    一个功能比较全的Asp.net在线考试系统源码,可以实现单选题、多选题维护、填空题、判断题的在线维护和管理,添加生成试卷后可以自动从题库进行调用试题,考试完成后自动打分,后台可以进行统计。 后台模块包括: ...

    ASP.NET网站开发典型模块与实例精讲 源码

    本书特别适合对ASP.NET基础知识有一定了解,但是不知道如何下手开发完整网站的初级学者,同时,也适合欲学习ASP.NET中的各种心得技巧,以提高开发水平的中高级学者,还可以作为广大院校毕业生的毕业设计用书。

    Asp.net MVC+EF问卷调查系统源码

    这是一款利用asp.net开发的一套十分专业的问卷调查系统,采用了典型的三层架构技术, 功能比较完整,为企业、政府、高校及科研机构提供更贴心和更专业的服务。可实现单选、 多选、多选(限制选择3-N项)、填空、...

    ASP.NET的网页代码模型及生命周期

    在ASP.NET中,网页包含视图状态来保存用户的信息,视图状态在页面发回到自身时,跨页过程存储和用户自己的页面的特定值,视图状态的优点如下所示。 q 不需要任何服务器资源。 q 在默认情况下,对控件启用状态的数据...

    asp.net学习积累的代码段

    Asp.Net中使用水晶报表 javascript提示类 分页 类 数据绑定 数据库方面 文件操作 验证码 ASP.NET 2.0高级控件之FileUpload控件.txt ASP.NET 程序中常用的三十三种代码.txt asp.net使用客户端验证.txt Asp.net中基于...

Global site tag (gtag.js) - Google Analytics