Asp.Net 在线(登录)人数统计
对于Web开发来说,统计访问或登录系统的人数是一件重要且常见的工作。
统计的主要方法一般是应用Application和Session来保存在线人数。这里介绍的例子是可以满足对访问系统,以及通过用户名密码登录系统的人数的统计,同时,也可以满足由于等待Session过期后才能统计,才能将在线人数减少的问题,当直接关闭浏览器时,立即减少人数,从而实现相对准确的统计值。开始吧~
1、配置Web.Config文件
将Session的状态配置成如下。
2、Global.asax中的各个方法
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
Application.RemoveAll();
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Session.Timeout = 30;
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application.Lock();
if (Application["Counts"] != null)
{
Application["Counts"] = Int32.Parse(Application["Counts"].ToString()) - 1;
if (Int32.Parse(Application["Counts"].ToString()) < 0)
Application["Counts"] = 0;
}
Application.UnLock();
}
</script>
至此,基本完成了统计的功能。即只要有用户访问系统的第一个页面,就有计数。也因为这样,导致统计的数量不是很准确。
3、登录成功后的人数处理
在登录成功后,即Session写入后,加入以下代码,对人数进行加以操作。
if (Application[ " Counts "] != null)
{
Application[ " Counts "] = Int32.Parse(Application[ " Counts "].ToString()) + 1;
}
else
{
Application[ " Counts "] = 1;
}
Application.UnLock();
4、退出时减一
Session.RemoveAll();
Session.Abandon();//取消会话状态就会触发Session_End的事件、
//在点击了“退出”按钮后增加以下,进行人数的减一操作
Application.Lock();
if (Application["Counts"] != null)
{
Application["Counts"] = Int32.Parse(Application["Counts"].ToString()) - 1;
if (Int32.Parse(Application["Counts"].ToString()) < 0)
Application["Counts"] = 0;
}
Application.UnLock();
5、当关闭窗口时的统计(关键的地方)
如果页面是用框架结构做的,则里面不能用.net的控件,而且没有body,因此,我们只能调用其他的页面来实现。
方法如下:
function PageClose()
{
//这样写,主要是防止刷新也触发该事件
if( event.clientX>document.body.clientWidth- 30 && event.clientY< 0 || event.altKey) // event.altKey表示按下了Alt按纽
{
// alert("X:"+event.clientX+" Y:"+event.clientY+" "+document.body.clientWidth);
window.location .href= " PageCloseCount.aspx ";
widnow.close();
}
}
</script>
</head>
<frameset on beforeunload= " PageClose() " rows= " 88,* " cols= " * " framespacing= " 0 " frameborder= " no " border= " 0 " bordercolor= " #0099FF ">
<frame src= " top.aspx " name= " topFrame " scrolling= " NO " noresize>
<frameset rows= " * " cols= " 148,* " framespacing= " 0 " frameborder= " no " border= " 0 " bordercolor= " #33CCFF ">
<frame src= " left.aspx " name= " leftFrame " scrolling= " yes " noresize>
<frame src= " desktop.aspx " name= " mainFrame " scrolling= " yes ">
</frameset>
</frameset>
<noframes><body>
</body></noframes>
PageCloseCount里调用的方法:
{
System.Web.HttpContext.Current.Session.RemoveAll();
System.Web.HttpContext.Current.Session.Abandon();
}
如果不是用框架做的就要简单些了,可以不需要调用其他的页面来执行方法,用他自己就可以了。
部分代码:
function PageClose()
{
if( event.clientX>document.body.clientWidth -30 && event.clientY< 0 || event.altKey) // event.altKey表示按下了Alt按纽
{
document.all( ' ButtonPageClose ').click();
document.all( ' ButtonPageClose ').focus();
}
}
</script>
</head>
<body on beforeunload= " PageClose() ">
按纽里的方法同上面一样,也是取消会话。
这个方法我测试了,好象基本上可以,但是又好象有时没调用到,好象是和用户点击按纽的位置有关。
Asp.Net 在线(登录)人数统计相关推荐
- 统计用户在线登录人数
2019独角兽企业重金招聘Python工程师标准>>> 服务器启动时,开启一个线程进行记录,线程对象中定义一个静态变量 public class ResourceLog implem ...
- 10亿条数据去重后排序和在线日志人数统计
一:10亿条数据排序 思路:数据量比较大,普通比较会占用很多的内存,可以采用其他方法,构造一个字节数组 每个字节的值代表连续八个整形数据的值是否存在,即使包括最大的整数值,大概内存512m 源码如下 ...
- 网站在线访问人数统计并计算停留时间
网站在线人数: void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 //初始化 Applica ...
- java扫描所有用户信息_监听器实现案例----自定义session扫描器和统计在线用户人数及用户信息...
一.案例一:自定义Session扫描器 1.案例说明 当一个Web应用创建的Session很多时,为了避免Session占用太多的内存,我们可以选择手动将这些内存中的session销毁,那么此时也可以 ...
- 统计在线人数和登录人数
思想: 1:统计在线人数. 只是访问了这个网页的人员. 一个session的创建就是一个在线人数+1.让所有人都可以看到.把在线人数到ServletContex ...
- c语言网络在线人数统计,教你用ASP程序实现网站在线人数统计
欢迎来到小编的文章进行学习阅读,想必大家又有很多问题吧,在这里会有你想要收获的答案,请大家慢慢学习吧!计算机编程语言 在浏览网页的时侯,常常可以看见一些"当前网站上的人数是XXX人" ...
- php学生成绩管理系统,在线录入、统计学生成绩,多种图表展示对比学生成绩
教学质量是学校教学的生命线,只有能够客观分析自己教学成败得失的教师才是一个合格的老师.这是一款注重优化成绩采集方法.丰富成绩分析维度的小学成绩统计系统,力争做到符合教师工作习惯.使用方法简单.数据分析 ...
- 如何用 SpringBoot 实现并发登录人数控制(附代码)
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 作者 ...
- springboot + shiro之登录人数限制、登录判断重定向、session时间设置
springboot + shiro之登录人数控制 项目 前篇:spring boot + mybatis + layui + shiro后台权限管理系统:https://blog.51cto.com ...
最新文章
- 推荐7本EEG领域值得阅读的书籍
- mysql的varchar要根据实际长度来申请
- 一只快乐的野指针_野酸枣
- Linux从零开始(三、命令图解)
- java zookeeper 主从热备_zookeeper 核心原理
- 转错误	x	error LNK1104: 无法打开文件“E:\xxxx\Debug\xxxx.exe”
- 【numpy】argmax参数辨析(axis=0,axis=1,axis=-1)
- C语言编译器字母怎么输入,c语言编译器怎么使用,c语言编译器下载使用教程
- 20190801H3C无线控制器3510H 版本升级总结
- L1-005 考试座位号 (15 分)
- 电脑端Ins图片保存
- 炫我科技渲染集群管理软件
- 优化服务器卡顿,如何解决国外服务器卡顿问题
- 鸿蒙开发工具在哪下载,【鸿蒙开发工具下载】华为鸿蒙开发工具软件下载 v2.1.8 最新版-七喜软件园...
- 电容笔和触控笔有什么区别?第三方电容笔了解下
- SQL修改表结构写法
- 【软件测试及质量保证】小结
- 形态学重建:孔洞填充的python实现
- 自动弹出窗口html代码,强制弹出广告页面+自动最小化代码
- C 连接ACCESS数据库代码实例