怎样统计登录用户数,是登录用户数

yuji821 2011-09-25 09:50:49
我是用了session,每个用户都有个session
,Session名称为:UserName_+用户名如: Session["UserName_yuji821"]

我怎么可以统计出当前登录用户数呢,可以根据session数量统计出来吗
...全文
629 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WJY_123456 2011-09-26
  • 打赏
  • 举报
回复
直接写到数据库呢?
vermilion3618 2011-09-25
  • 打赏
  • 举报
回复
对 确实没办法完全准确统计

因为 如果用户在登录成功后 Application["UserCount"]+1 之后如果用户不点击退出 而直接关闭所有浏览器的话 Session_End是不会执行的 这就要等到Session设置的期限过期后才会执行Session_End

Session的默认到期时间是30分钟
zsyok 2011-09-25
  • 打赏
  • 举报
回复
无法准确的统计的.
vermilion3618 2011-09-25
  • 打赏
  • 举报
回复
Global.asax文件 添加后 里面的事件 应该不用说都看得懂啥意思吧??
Application_Start Asp.net服务启动时触发 也就是服务器开始运行时
Session_Start 只要某用户进入 首次添加了Session对象 就会触发
Session_End Session清空或到期时触发
vermilion3618 2011-09-25
  • 打赏
  • 举报
回复
没办法的 session对象是服务器与客户端1对1的 其他用户是无法访问到的

如果你只需要显示用户登录数 那么可以在站点根目录添加Global.asax文件 也就是在添加新项中的全局文件
一个网站只能有一个这样的文件

添加后 可以看到里面有5个事件 在这里你只需要用到Application_Start Session_Start Session_End
事件
在Application_Start中写入
Application["UserCount"]=0;

然后在Session_Start中写入
Application.lock();
Application["UserCount"]=Convert.ToInt32(Application["UserCount"])+1;
Application.unlock();

Session_End中写入
Application.lock();
Application["UserCount"]=Convert.ToInt32(Application["UserCount"])-1;
Application.unlock();

在整个站点中需要显示在线人数的地方写入以下代码 比如我要写入某个页面的Label1控件中
Label1.Text=Application["UserCount"].ToString();

Application对象 是应用程序级的全局对象

它和Session用法基本类似 只是它的作用域是所有用户 只要你定义了 那么所有用户都可以得到该对象

62,041

社区成员

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

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

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

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