asp.net 在线人数统计\页面访问量
1.新建网站,添加几个窗体。webForm1.aspx ,ViewStateForm.aspx
2.在网站的根目录下添加全局应用程序类“Global.aspx” 。(重要)
3.在“Global.aspx” 有固有的格式和会话信息结构。
4.在“Global.aspx”中各个函数中添加处理代码。详细如下:
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e) //初始化站点的在线人数
{
// 在应用程序启动时运行的代码//初始化变量:UserCount 和 StatCount
Application.Lock(); //临界变量,使用加锁功能,其他用户不能访问。
Application["UserCount"] = 0;
Application.UnLock(); //临界变量被解锁。
Application.Lock(); //临界变量,使用加锁功能,其他用户不能访问。
Application["StatCount"] = 0;
Application.UnLock(); //临界变量被解锁。
Application.Lock(); //临界变量,使用加锁功能,其他用户不能访问。
Application["StatCount_ViewSF"] = 0;
Application.UnLock(); //临界变量被解锁。
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e) //站点在线人数加一
{
// 在新会话启动时运行的代码
Application.Lock(); //临界变量,使用加锁功能,其他用户不能访问。
Application["UserCount"] = Int32.Parse(Application["UserCount"].ToString()) + 1;
Application.UnLock(); //临界变量被解锁。
//测试某一页的访问量※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
String pageurl = Request.Url.ToString();//获取用户访问的页面
if(pageurl .EndsWith ("WebForm1.aspx")) //判断访问的是否是默认页
{
//锁定变量
Application.Lock();
//页面访问量加一
Application["StatCount"] = int.Parse(Application["StatCount"].ToString()) + 1;
//解锁
Application.UnLock();
}
else if (pageurl.EndsWith("ViewStateForm.aspx")) //判断访问的是否是默认页
{
//锁定变量
Application.Lock();
//页面访问量加一
Application["StatCount_ViewSF"] = int.Parse(Application["StatCount_ViewSF"].ToString()) + 1;
//解锁
Application.UnLock();
}
} //&&&&&&&&&&&&&&&****************$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
void Session_End(object sender, EventArgs e) //站点在线人数减一
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application.Lock();
Application["UserCount"] = Int32.Parse(Application["UserCount"].ToString()) - 1;
Application.UnLock();
}
//Http请求开始和结束时的处理事件
protected void Application_BeginRequest(object sender, EventArgs e)
{
//取得表的TabID
//int tabId = 0; int tabIndex = 0;
//if(Request .Params ["TabId"]!=null)
//{
// tabId = Int32.Parse(Request .Params ["TabId"]);
//}
//if(Request .Params ["tabIndex"]!=null )
//{
// tabIndex = Int32.Parse(Request .Params ["TabIndex"]);
//}
}
protected void Application_EndRequest(object sender, EventArgs e)
{
}
//Http请求验证的处理事件
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
}
</script>
5. 在webForm1.aspx 的相应的CS文件中添加如下的代码:
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack) { OutputUserCount(); }
}
protected void OutputUserCount() //显示当前站点在线人数
{
Response.Write("站点在线人数:");
Response.Write(Application["UserCount"].ToString());
Response.Write(" 人。");
Response.Write("本页面的访问量:");
Response.Write(Application["StatCount"].ToString());
Response.Write(" 。");
}
}
6. ViewStateForm.aspx 的相应的CS文件中添加如下的代码:
public partial class ViewStateForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack) { OutputUserCount(); }
}
protected void OutputUserCount() //显示当前站点在线人数
{
Response.Write("站点在线人数:");
Response.Write(Application["UserCount"].ToString());
Response.Write(" 人。");
Response.Write("本页面的访问量:");
Response.Write(Application["StatCount_ViewSF"].ToString());
Response.Write(" 。");
}
}
7. webconfig 中也有部分对session的配置控制。
<sessionState mode="InProc"
cookieless="true"
timeout="20" />
<!--
会话状态设置
默认状态下,asp.net 使用 cookie 标示哪些请求属于特定的会话。
如果cookie 不可用,则可以通过将会话标识符添加到url,来跟踪会话。
若要禁用cookie ,请设置sessionstate cookieless="true"。
首次使用了:<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source= 127.0.0.1;userid=sa;password="
cookieless="false"
timeout="20"
/> 后便成功了。不知道为什么?新建立了网站,没有用居然也可以。莫名奇妙,看来不是这个的原因,应该是系统暂时性错误。
-->
然后就可以在IIS中进行测试了。这个处理方法在IIS重启后就会重新从零进行统计。
asp.net 在线人数统计\页面访问量的更多相关文章
- jsp统计页面访问量和刷访问量的简单使用
~Jsp可以进行简单的页面访问量统计,当然也可以使用Jsp刷访问量. 1:第一种使用全局变量<%! int i=0;%>进行页面的访问量统计,只有新打开一个浏览器才可以进行统计. 2:第二 ...
- 统计网站访问量,以GD2库图像形式输出
index.php页面<?php session_start(); if($_SESSION[temp]==""){ //判断$_SESSION[temp]=="& ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(39)-在线人数统计探讨
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(39)-在线人数统计探讨 系列目录 基于web的网站在线统计一直处于不是很精准的状态!基本上没有一种方法可 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-[过滤器+Cache] 系列目录 上次的探讨没有任何结果,我浏览了大量的文章 ...
- Web并发页面访问量统计实现
Web并发页面访问量统计实现 - huangshulang1234的博客 - CSDN博客https://blog.csdn.net/huangshulang1234/article/details/ ...
- Spring Boot入门(12)实现页面访问量统计功能
在日常的网站使用中,经常会碰到页面的访问量(或者访问者人数)统计.那么,在Spring Boot中该如何实现这个功能呢? 我们的想法是比较简单的,那就是将访问量储存在某个地方,要用的时候取出来 ...
- 如何实现对网站页面访问量的统计(javaweb和php)
如何实现对网站页面访问量的统计(javaweb和php) 一.总结 一句话总结:其实很简单啦,每访问一次那个页面对应的index函数(控制器中的那个函数)访问次数就加1就可以了. 1.javaweb中 ...
- 用HttpSessionListener与HttpSessionBindingListener实现在线人数统计
在线人数统计方面的实现,最初我的想法是,管理session,如果session销毁了就减少,如果登陆用户了就新增一个,但是如果是用户非法退出,如:未注销,关闭浏览器等,这个用户的session是管理不 ...
- 关于在asp.net的web页面中的全局变量问题
在asp.net的web页面中是不是没有全局变量?有的,在Class类内部的都是,只不过在WebWofm程式中跟WinForm和Console程式有些区别,当页面刷新时,它们的值不会保持,依然会再次初 ...
随机推荐
- translate函数使用
SQL> select data,translate(data,'0123456789','##########') as num1, replace(translate(data,'01234 ...
- Node.js权威指南 (8) - 创建HTTP与HTTPS服务器及客户端
8.1 HTTP服务器 / 177 8.1.1 创建HTTP服务器 / 177 8.1.2 获取客户端请求信息 / 182 8.1.3 转换URL字符串与查询字符串 / 184 8.1.4 发送服务器 ...
- -_-#flash播放器自适应
设置断点,几个断点下的固定布局
- 网络流(费用流)CodeForces 321B:Ciel and Duel
Fox Ciel is playing a card game with her friend Jiro. Jiro has n cards, each one has two attributes: ...
- 博弈论(男人八题):POJ 1740 A New Stone Game
A New Stone Game Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5694 Accepted: 3119 ...
- 8个超炫酷仿HTML5动画源码
1.jQuery万年历插件 带农历老皇历功能 这是一款基于jQuery的日历插件,这款日历插件和之前分享的日历控件有很大差异,它是一本万年历,包含了农历已经老皇历的功能,是一个挑好日子的工具.同时日历 ...
- Win10开发必备:Visual Studio 2015正式版下载
7月21日凌晨消息,面向大众用户的Visual Studio 2015集成开发工具正式版免费试用版已经推出.本文帮大家汇总一下简体中文社区版.专业版以及企业版在线安装版以及ISO离线安装镜像下载地址. ...
- Delphi中WideString类型如何转化成String类型
var wstr:WideString; str:string; begin str:=WideCharToString(PWideChar(wstr)); end;
- [Git] Github客户端上publish后一直转圈,web上未上传成功
连续试了几次,publish后一直处于publish状态,点击其它repositories再点回来就没动静了,也看不到Sys按钮...最后发现,是要等很久才会成功,天朝的网络伤不起
- 10881 - Piotr's Ants(排序)
题目链接:10881 - Piotr's Ants 题目大意:在一个长为L的木棒上有n只蚂蚁,给出蚂蚁的初始位置以及方向,问说移动T秒后各个蚂蚁的位置以及状态,如果两只蚂蚁在移动的过程中相撞,则会同时 ...