关于在线人数统计的问题

leochan 2009-03-10 08:53:29
今天想用Application做一下在线人数统计,方法从网上看的,基本上都一样,就是在Global.asax文件中添加代码如下:
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
Application["user_sessions "] = 0;
}

void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
Application.Lock();
Application["user_sessions "] = (int)Application["user_sessions "] + 1;
Application.UnLock();
}

void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
Application.Lock();
Application["user_sessions "] = (int)Application["user_sessions "] - 1;
Application.UnLock();
}

但是问题来了,就是测试的时候,发现只会统计访问过的人数,当有人关闭浏览器没访问时,人数不会减少,请问下,是什么原因,谢谢!!!!
...全文
138 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
leochan 2009-03-14
  • 打赏
  • 举报
回复
谢谢楼上各位的解答,谢谢
jietuan 2009-03-10
  • 打赏
  • 举报
回复
你这样做就已经很好了,你可以把Session失效时间设置短一点。
xfreyes 2009-03-10
  • 打赏
  • 举报
回复
大多数情况下,用你的方法就可以了,要那么精确干什么,似乎没必要
Teng_s2000 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 2002pine 的回复:]
原因是大家都说的,sessin_end 并不是你关闭ie时触发,而是要等到你设的session 过期时间。
所以为了解决这个问题,
你可以点击退出登录按钮,调用session.abandon.
或者你在你的主页面的关闭客户端事件 , window.onbeforeunload
中判断是点了关闭还是刷新按钮, 在这个事件中,如果是用户点了关闭事件,调用ajax 或xmlhttp去更新application[user_sessions]的值
[/Quote]
UP
2002pine 2009-03-10
  • 打赏
  • 举报
回复
原因是大家都说的,sessin_end 并不是你关闭ie时触发,而是要等到你设的session 过期时间。
所以为了解决这个问题,
你可以点击退出登录按钮,调用session.abandon.
或者你在你的主页面的关闭客户端事件 , window.onbeforeunload
中判断是点了关闭还是刷新按钮, 在这个事件中,如果是用户点了关闭事件,调用ajax 或xmlhttp去更新application[user_sessions]的值

claymore1114 2009-03-10
  • 打赏
  • 举报
回复
可以 用数据库存
或 Membership类来统计
浮生若梦丶 2009-03-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
session统计不准确,应该记录用户登录时间和日志,通过最后一次操作时间判断是否在线
[/Quote]
up
BossFriday 2009-03-10
  • 打赏
  • 举报
回复
记录用户最后活动时间.这个肯定不时实时的.
过河石头 2009-03-10
  • 打赏
  • 举报
回复
这种统计方式不是实时的,只能得到大概数据。
wuyq11 2009-03-10
  • 打赏
  • 举报
回复
http://www.cnblogs.com/mrcooldog/archive/2008/09/18/936211.html
wuyq11 2009-03-10
  • 打赏
  • 举报
回复
session统计不准确,应该记录用户登录时间和日志,通过最后一次操作时间判断是否在线
HsWong 2009-03-10
  • 打赏
  • 举报
回复
Session过期才会触发Session_End事件的

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧