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

2009-07-30 15:50 佚名 网翼教程网 字号:T | T

本文介绍了如何在asp.net中进行网站访问量的统计。

AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验

下面介绍如何进行ASP.NET中网站访问量的统计。

一、建立一个数据表IPStat用于存放用户信息

我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间(IP_DateTime),些表的信息本人只保存一天的信息,如果要统计每个月的信息则要保存一个月。因为我不太懂对数据日志的操作,所以创建此表,所以说我笨吧,哈哈。

二、在Global.asax中获取用户信息

在Global.asax的Session_Start即新会话启用时获取有关的信息,同时在这里实现在线人数、访问总人数的增量统计,代码如下:

  1. void Session_Start(object sender, EventArgs e)
  2. {
  3. //获取访问者的IP
  4. string ipAddress = Request.ServerVariables["REMOTE_ADDR"];
  5. //获取访问者的来源
  6. string ipSrc;
  7. //判断是否从搜索引擎导航过来的
  8. if (Request.UrlReferrer == null)
  9. {
  10. ipSrc = "";
  11. }
  12. else
  13. {
  14. //获取来源地址
  15. ipSrc = Request.UrlReferrer.ToString();
  16. }
  17. //获取访问时间
  18. DateTime ipDatetime = DateTime.Now;
  19. //保存IP信息到数据库中
  20. IPControl cont = new IPControl();
  21. cont.AddIP(ipAddress, ipSrc, ipDatetime);
  22. //获取用户访问的页面
  23. string pageurl = Request.Url.ToString();
  24. //判断访问的是否是默认页
  25. if (pageurl.EndsWith("IPStat.ASPx"))
  26. {
  27. //锁定变量
  28. Application.Lock();
  29. //为页面访问量+1
  30. Application["StatCount"] = int.Parse(Application["StatCount"].ToString()) + 1;
  31. //解锁
  32. Application.UnLock();
  33. }
  34. //锁定变量
  35. Session.Timeout = 10; //设定超时为10分钟
  36. Application.Lock();
  37. Application["countSession"] = Convert.ToInt32(Application["countSession"]) + 1;//访问总人数+1
  38. Application["onlineWhx"] = (int)Application["onlineWhx"] + 1; //在线人数加+1
  39. Session["login_name"] = null;
  40. //解锁
  41. Application.UnLock();
  42. }

提醒一句,别忘了下面的代码,以实现在用户离线时,将在线人数减去1.

  1. void Session_End(object sender, EventArgs e)
  2. {
  3. // 在会话结束时运行的代码。
  4. // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 InProc 时,才会引发 Session_End 事件。
  5. 如果会话模式设置为 StateServer
  6. // 或 SQLServer,则不会引发该事件。
  7. //锁定变量
  8. Application.Lock();
  9. Application["onlineWhx"] = (int)Application["onlineWhx"] - 1; //在线人数减-1
  10. Session["login_name"] = null;
  11. //解锁
  12. Application.UnLock();
  13. }

三、将以上有关信息保存到数据库IPStat

ASP.NET中网站访问量统计的最后一个实现步骤,就是创建了一个获取IP数据信息的类IPControl(),用来实现对数据库IPStat数据的操作,关于IPControl()类的内容,因为它是C#中对数据库的操作,以解sql server 数据库,就能看懂它,这里就不作介绍了,请点击该链接查看。

为了实现将用户IP信息存入数据库,在上面代码中对IPControl()进行调用

  1. //保存IP信息到数据库中
  2. IPControl cont = new IPControl();
  3. cont.AddIP(ipAddress, ipSrc, ipDatetime);

参数ipAddress为用户IP,ipSrc为用户来源, ipDatetime为用户进入时间。

以上就实现了ASP.NET中网站访问量的统计。

如何实现ASP.NET中网站访问量的统计的更多相关文章

  1. ASP.net中网站访问量统计方法代码(在线人数,本月访问,本日访问,访问流量,累计访问)

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

  2. ASP.net中网站访问量统计方法

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

  3. 关于linux asp.net MVC网站中 httpHandlers配置无效的处理方法

    近期有Jexus用户反映,在Linux ASP.NET MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404( ...

  4. ASP.NET Core 网站在Docker中运行

    Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境.测试环境.UAT环境.生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署, ...

  5. 【转载】ASP.NET中Server.MapPath方法获取网站根目录总结

    在ASP.NET网站应用程序中,可以通过Server.MapPath方法来获取跟服务器有关的目录信息,如获取网站的根目录.获取当前代码文件所在的目录路径.获取当前代码所在路径的上级路径等.Server ...

  6. 如何在 ASP.NET 应用程序中实现模拟用户身份(在ASP.NET中以管理员身份运行网站)

    前言 在实际的项目开发中,我们可能会需要调用一些非托管程序,而有些非托管程序需要有更高的身份权限才能正确执行.本文介绍了如何让IIS承载的ASP.NET网站以特定的账户执行,比如Administrat ...

  7. ASP.NET Web网站中App_Code文件夹的作用及使用场景

    原文地址:Web Site项目和ASP.NET Web Application中App_Code文件夹的作用作者:宾的宾 我现在要建一个ASP.NET的网站了,不难吧,开始动手.如下图: 这种方法建立 ...

  8. 以下是关于ASP.NET中保存各种信息的对象的比较,理解这些对象的原理,对制作完善的程序来说是相当有必要的(摘至互联网,并非原创--xukunping)

    在ASP.NET中,有很多种保存信息的对象.例如:APPlication,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么?    为了 ...

  9. 秒懂ASP.NET中的内置对象

    上篇博客,小编主要简单的介绍了一下ASP.NET中的控件,这篇博客,小编主要简单总结一下ASP.NET中的内置对象,七个内置对象分别是:Request.Response.Application.Coo ...

随机推荐

  1. adb_亮屏

    来自:http://justonlypiano.blogspot.tw/2013/08/adbandroidandroid-phone-screen-off-via.html 更多内容请查看:http ...

  2. nodejs学习笔记<三>关于路由(url)

    在网站开发中,路由的设置非常关键.nodejs对路由处理封装了一个比较全面的模块. 来认识下url模块 1)在命令行(cmd)可以直接 node —> url 可直接查看url模块的所有方法. ...

  3. PHPStorm怎么修改选中的背景颜色呢?

    File -> Settings -> editor ->color&fonts->general->下拉框中的selection background-> ...

  4. MySQL忘记root密码--skip-grant-tables

    使用--skip-grant-tables选项启动MYSQL时,服务器将不加载权限判断,这样就可以进行授权和密码更新操作了,具体步骤如下: 1. 停止mysql /etc/init.d/mysqld ...

  5. Git的优势

    分布式,强调个体 公共服务器压力和数据量都不会太大 速度快.灵活 任意两个开发者之间可以很容易的解决冲突 离线工作

  6. 认识Service

    Service相对于Activity可在后台运行,五显示界面,在activity退出的情况下仍能运行. 一.新建一个空的工程,命名为learnService 二.新建一个service,并添加如下所示 ...

  7. UIImageView 的contentMode属性

    UIViewContentModeScaleToFill UIViewContentModeScaleAspectFit UIViewContentModeScaleAspectFill UIView ...

  8. C# winform解决解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题

    public frmMain() { InitializeComponent(); //解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题 int x = Convert.ToInt32(( ...

  9. openfire教程网

    http://myopenfire.com/article/articledir/1#

  10. jsp实时显示后台批处理进度 - out分块,简单的长连接方式

    这两天在实现一个批处理操作,但是想让前台实时显示后台批处理进度,本想着用复杂一些的框架可以实现异步信息调用 但是鉴于是内部管理系统,且只有一两个人用到这个功能,所以做了一个简单的长连接方式的实时响应 ...