asp.net统计当前在线人员

xuxiaomei2707 2012-03-08 10:56:10
我想判断当前在线人员,想了一个很笨的方法,就是数据库建一个表记录每个用户登陆和退出的时间,在进行判断,,可是退出时间也不好记录啊,如果不是正常的关闭,那退出时间就不知道了?

在网上看了一些,应该有一些简便的方法吧,监测当前在线用户。比如写到global.asax中?,可是试了很多都没有成功,大家可不可以给个详细的例子啊,谢谢了,可发到我的邮箱中540011858@qq.com
...全文
173 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
全局变量 2012-03-09
  • 打赏
  • 举报
回复
session 用数据库存。

或在客户端定时发送在线数据。(服务器负载较大)

不知道云技术能不能做。(大牛玩的)


种草德鲁伊 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xuxiaomei2707 的回复:]

大家给一个有效地方法吧!详细点啊
[/Quote]

5楼说的不够详细吗,membership里也是这样做的。
xuxiaomei2707 2012-03-09
  • 打赏
  • 举报
回复
大家给一个有效地方法吧!详细点啊
ziyouli 2012-03-08
  • 打赏
  • 举报
回复
这个东西统计不了那么准的,用session可能好点吧,在session_start的时候记录登录时间,在session_end的时候记录退出时间,退出时间偏差在设定的session过期时间内。
wcj1018_net 2012-03-08
  • 打赏
  • 举报
回复
愿闻其详,呵呵
相当之稳重 2012-03-08
  • 打赏
  • 举报
回复
对2楼表示暴汗。。。
相当之稳重 2012-03-08
  • 打赏
  • 举报
回复
楼上的代码应该写在 Global.asa 文件里的吧
种草德鲁伊 2012-03-08
  • 打赏
  • 举报
回复
退出时间没办法记录。
可以记录一个最后活动时间,用这个时间与当前时间比较,一定范围内算是在线。
xuxiaomei2707 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yuan521929 的回复:]
C# code


void application_start(object sender, eventargs e)
  {
  //在应用程序启动时运行的代码
  application["count"] = 0;
  system.io.filestream fs = system.io.file.open(server.mappath("count.txt"), s……
[/Quote]


如果我要是想获得到人员姓名和id 怎么弄啊,不是人数
tptptp00 2012-03-08
  • 打赏
  • 举报
回复

连注释都一样的
beautiful_melody 2012-03-08
  • 打赏
  • 举报
回复

void application_start(object sender, eventargs e)
  {
  //在应用程序启动时运行的代码
  application["count"] = 0;
  system.io.filestream fs = system.io.file.open(server.mappath("count.txt"), system.io.filemode.openorcreate);
  system.io.streamreader sr = new system.io.streamreader(fs);
  application["allusers"] = convert.toint32(sr.readline());
  sr.close();
  fs.close();
  }
  void application_end(object sender, eventargs e)
  {
  //在应用程序关闭时运行的代码
  }
  void application_error(object sender, eventargs e)
  {
  //在出现未处理的错误时运行的代码
  }
  void session_start(object sender, eventargs e)
  {
  //在新会话启动时运行的代码
  application.lock();
  application["count"] = convert.toint32(application["count"]) + 1;
  application["allusers"] = convert.toint32(application["allusers"]) + 1;
  system.io.filestream fs = new system.io.filestream("count.txt", system.io.filemode.openorcreate, system.io.fileaccess.readwrite);
  system.io.streamwriter sw = new system.io.streamwriter(fs);
  sw.writeline(application["allusers"]);
  sw.close();
  fs.close();
  application.unlock();
  }
  void session_end(object sender, eventargs e)
  {
  //在会话结束时运行的代码。
  // 注意: 只有在 web.config 文件中的sessionstate 模式设置为inproc时,www.3ppt.com才会引发 session_end 事件。如果会话模式设置为 stateserver 或 sqlserver,则不会引发该事件。
  application.lock();
  application["count"] = convert.toint32(application["count"]) - 1;
  application.unlock();
  }
  页面只要读出application的内容就行啦:
  response.write(application["count"]+"当前人数"+"
总人数:"+application["allusers"]);

愚知 2012-03-08
  • 打赏
  • 举报
回复

void application_start(object sender, eventargs e)
  {
  //在应用程序启动时运行的代码
  application["count"] = 0;
  system.io.filestream fs = system.io.file.open(server.mappath("count.txt"), system.io.filemode.openorcreate);
  system.io.streamreader sr = new system.io.streamreader(fs);
  application["allusers"] = convert.toint32(sr.readline());
  sr.close();
  fs.close();
  }
  void application_end(object sender, eventargs e)
  {
  //在应用程序关闭时运行的代码
  }
  void application_error(object sender, eventargs e)
  {
  //在出现未处理的错误时运行的代码
  }
  void session_start(object sender, eventargs e)
  {
  //在新会话启动时运行的代码
  application.lock();
  application["count"] = convert.toint32(application["count"]) + 1;
  application["allusers"] = convert.toint32(application["allusers"]) + 1;
  system.io.filestream fs = new system.io.filestream("count.txt", system.io.filemode.openorcreate, system.io.fileaccess.readwrite);
  system.io.streamwriter sw = new system.io.streamwriter(fs);
  sw.writeline(application["allusers"]);
  sw.close();
  fs.close();
  application.unlock();
  }
  void session_end(object sender, eventargs e)
  {
  //在会话结束时运行的代码。
  // 注意: 只有在 web.config 文件中的sessionstate 模式设置为inproc时,www.3ppt.com才会引发 session_end 事件。如果会话模式设置为 stateserver 或 sqlserver,则不会引发该事件。
  application.lock();
  application["count"] = convert.toint32(application["count"]) - 1;
  application.unlock();
  }
  页面只要读出application的内容就行啦:
  response.write(application["count"]+"当前人数"+"
总人数:"+application["allusers"]);
EnForGrass 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xuxiaomei2707 的回复:]

怎么弄啊
[/Quote]
会话结束后,asp.net的会自动处理吧。比如session,应该有个会话结束的事件把在那里面写
xuxiaomei2707 2012-03-08
  • 打赏
  • 举报
回复
怎么弄啊
kaikai_kk 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ptyzhu 的回复:]
对2楼表示暴汗。。。
[/Quote]

+

62,243

社区成员

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

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

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

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