如何检查用户是否仍处于活动状态?

时间:2009-06-24 04:54:26

标签: asp.net

如何每隔1分钟检查用户是否仍处于活动状态?我需要知道哪个用户当前是活跃的,谁不是!我没有使用ASP.NET成员资格提供程序!

可以说,一个用户最多允许3个登录从3个不同的位置同时登录,如果同一个用户,即第4个登录,尝试再次从另一个位置登录,我想阻止第4次登录。

我也没有这方面的问题!如果用户拔下连接线或关闭浏览器,我该如何判断用户是否仍处于活动状态?

2 个答案:

答案 0 :(得分:5)

我需要更详细地了解您要完成的内容,因为您提出了一个相当含糊的问题。但是,我认为确定用户是否处于活动状态的最佳方法是检查他们的ASP.NET会话是否仍然存在。没有“准确”的方法来测试用户是否仍然在浏览您的网站,因为他们可能正坐在那里阅读,或者是AFK,或者是在他们的计算机上的另一个程序......如果不是数百个场景可能存在数十个在客户端。

但是,用户的ASP.NET会话将仅在用户的每个活动(GET,POST等)之间的特定时间段内生存。通常在20分钟后,ASP.NET将清理用户会话,并且当它发生时,它将触发一个Session_End事件,该事件可以在Global.asax中处理,也可以用自定义的HttpModule处理。然后,您就可以将该用户标记为在您自己的数据库中处于非活动状态,发送电子邮件或执行您需要执行的任何操作。

答案 1 :(得分:1)

您可以使用 HttpResponse.IsClientConnected 属性检查用户是否仍然与该会话连接。有关详细信息,请参阅此 - > http://msdn.microsoft.com/en-us/library/system.web.httpresponse.isclientconnected.aspx

或者,您可以在global.asax的Session_OnState设置一个计数器,以检查可用的活动会话,并根据它执行您的工作。

相关问题