在线用户问题(Session,Application)

papapa 2002-08-25 05:21:43
我的程序想实时列出在线用户名单。
我的做法是每当用户登陆时将用户信息放进Session中,并且放进Application中。当用户注销时做Session.Abandon();并且在Global.asax.cs中有如下代码:
protected void Session_End(Object sender, EventArgs e)
{
Application.Lock();
Application.Remove(((LogUser)Session["loguser"]).Name);
Application.UnLock();
}
这时问题出现了,当用户不是按注销退出,而是按关闭窗口或者关掉机器时,该用户竟然一直在在线用户名单中,除非Session到期。
各位大侠有什么高见,100分诚心感谢!


...全文
36 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
glboy 2003-01-16
  • 打赏
  • 举报
回复
本来也想提问这么一个类似问题,现在只好帮楼主UP了。
as12a 2003-01-16
  • 打赏
  • 举报
回复
csdn怎么做的?
当关掉csdn的叶面以后
把http://expert.csdn.net/expert/forum.asp复制过去,就要求我重新登陆
而我挂起账号的时候session就不会过期
sqhua 2002-08-29
  • 打赏
  • 举报
回复
要想准确知道是否在线的话,只有不断的查询了.

用WebService+定时器(客户端)可以很好的做到这一点
papapa 2002-08-29
  • 打赏
  • 举报
回复
有没有标准答案,我很想早点结帐呀。
papapa 2002-08-26
  • 打赏
  • 举报
回复
因为程序是在办公系统内,所以SESSION一直不会过期.这样session_onend可能不会执行.
另外, abigfrog(☆★千年精灵★☆)的统计sessionid是什么意思,能不能详细点?
那位大侠还有什么好的主意,能不能指点哈?
iStringTheory 2002-08-25
  • 打赏
  • 举报
回复
建议你在每个页面统计sessionid,因为这个id是唯一的,根据这个id增减在线人数。
hawise 2002-08-25
  • 打赏
  • 举报
回复
session_onend总是会执行啊。只是不知道什么时候执行罢了。这样没有问题的。
papapa 2002-08-25
  • 打赏
  • 举报
回复
难道都是这样有一部分是不存在的用户吗?如果手工清除Application中的信息的话,但他的Session中的信息一直存在,这好象有点矛盾.
spring_ok 2002-08-25
  • 打赏
  • 举报
回复
除了 SESSION_END 中作这样的处理之外,你还可以定期检查那些没有活动的用户,将其从在线名单中清除掉。
baitianhai 2002-08-25
  • 打赏
  • 举报
回复
晕倒,这样是很正常的阿

62,074

社区成员

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

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

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

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