获取在线用户数量

时间:2015-07-23 16:19:22

标签: asp.net .net-3.5 asp.net-membership

我环顾四周寻找这个问题并找到了两种方法:使用数据库表记录用户登录,并在注销或会话结束时删除该条目;或使用Membership.GetNumberOfUsersOnline()。我首先尝试了Membership版本,但是当我登录时它显示数字为零(我使用基于表单的身份验证,在Intranet Web应用程序中使用AD并使用Oracle DB)。

我还创建了一个表,其中包含用户ID(存储为aspnet_user的用户名),aspnet_user的用户ID,登录时间戳和注销时间戳。当用户登录时,我添加一个条目,当用户注销时,我删除该条目。这里的问题是如果会话结束并且调用了Session_End()事件,我无法访问用户的ID(存储在会话var中),以便从表中删除正确的条目。

感谢您解决此问题的任何帮助。

1 个答案:

答案 0 :(得分:0)

在成员资格中,它会记录您登录时的某些日期并创建更新成员资格用户的活动,我认为默认行为是使用该...如果您使用的是自定义成员资格提供程序,请确保默认行为是保留。

或者,如果您想自己滚动,以确定在线用户数,每次用户采取回发的操作,更新用户记录的时间,然后创建一个查询相对数量的查询时间。 Session_ENd不是确定用户是否在线的完美方式,因为它可能并不总是触发。用户也不要总是点击显式注销按钮,因此这也可能不是一个好的指标。但由于会话是20分钟,检查在过去20分钟内发生的活动的位置是登录用户的粗略指示......