我使用.NET 3.5。 此外,使用窗体身份验证。
有没有办法让所有登录用户的列表或ASP.NET 计数 ?
注意:我不使用成员资格和角色
我使用.NET 3.5。 此外,使用窗体身份验证。
有没有办法让所有登录用户的列表或ASP.NET 计数 ?
注意:我不使用成员资格和角色
没有没有,除非
你已经在自己的代码中定义一个
您正在使用具有默认ASPNET成员资格提供GetNumberOfUsersOnline()
定义的方法。
您正在使用自定义成员资格提供程序,并提供了一个实现GetNumberOfUsersOnline()
方法自己
默认ASPNET会员提供通过查询SQL Server数据库和检查在线计算用户数量LastActivityDate
存储抵减定义的每个用户UserIsOnlineTimeWindow
,你可以在web.config中设置属性。 如果LastActivityDate
比当前时间减去更大UserIsOnlineTimeWindow
值(代表分钟),然后用户被认为是在线。
如果你想要做类似的东西,那么你可能会考虑实施类似的方法。 你可以看到默认提供的代码下载源代码 。 要完成你的照片,你可能还需要运行aspnet_regsql.exe的 ,这样你可以看到存储过程,默认的供应商使用。
会员供应商确实有它的好处,但只是在网上跟踪用户还可以:
一列LastActivityDate添加到您的用户表和登录时对所有页面加载该用户从您的代码更新。
并获得usersonline在过去的X分钟只需要使用下面的SQL
Select * from Users where LastActivityDate > DATEADD(minute, -(X), GETDATE())
窗体身份验证存储在传递给用户的浏览器cookie中的所有它的状态。
(这使窗体身份验证上的Web农场工作)
因此,有没有办法让登录的用户从标准窗体身份验证等的列表。
然而窗体身份验证有当用户进行身份验证等,你可以在这些事件中更新自己的用户列表,它触发事件 - (小心锁,如果你这样做)
但是作为一个用户将被“记录的”如果cookie是由浏览器过期,你会发现它很难正确删除从列表中的正确的时间所有的登录用户。
您可能是更好地保存你上一次看见每个用户,然后让你在说最后5分钟看到用户列表的时间。 例如,保持活跃的用户列表。
我用在session_start和Session_End中Global.aspx下。 它工作的时候大多数用户除了关闭他/她的浏览器。 服务器端需要等待会话过期删除用户。