Asp.net成员资格已登录用户列表

Asp.net成员资格已登录用户列表,asp.net,Asp.net,我在我的应用程序中使用以下命令来查找已登录用户的列表。它给出了已登录用户的列表,但当我关闭浏览器并清除浏览器历史记录时,它会显示用户isonline状态true。谁能告诉我哪里错了吗 当用户登录验证用户并重定向到url时, if (user != null) { if (Membership.ValidateUser(user.UserName, txtUserPassword.Text)) { FormsAuthentication.SetAuthCooki

我在我的应用程序中使用以下命令来查找已登录用户的列表。它给出了已登录用户的列表,但当我关闭浏览器并清除浏览器历史记录时,它会显示用户isonline状态true。谁能告诉我哪里错了吗

当用户登录验证用户并重定向到url时,

if (user != null)
{
     if (Membership.ValidateUser(user.UserName, txtUserPassword.Text))
     {
        FormsAuthentication.SetAuthCookie(txtUserName.Text, false);
     }
}
登录用户代码列表

 MembershipUserCollection allUsers = Membership.GetAllUsers();

 MembershipUserCollection filteredUsers = new MembershipUserCollection();

 bool isOnline = true;
 foreach (MembershipUser user in allUsers)
 {
    // if user is currently online, add to gridview list
   if (user.IsOnline == isOnline)
   {
      filteredUsers.Add(user);
   }
 }
使用以下链接:

使用以下链接:


我不知道你为什么投了反对票,这是一个有效的问题。你也可能永远看不到这个答案,但其他人可能也有同样的问题

MembershipUser.IsOnline
并不能非常准确地检查用户是否在线。根据,用户被确定为在线:

如果当前日期和时间减去 UserIsOnlineTimeWindow属性值早于 用户的LastActivityDate

这意味着用户可以在10秒后登录并注销,但仍被视为在线

因此,在您的情况下,您登录、检查计数、注销、关闭浏览器、清除缓存等,但用户的
LastActivityDate
仍在上述假定窗口内。您可以做的是:

  • 缩短时间窗口(这会产生一些不必要的方面 (效果)
  • 注销个人时,将其
    LastActivityDate
    更新为 使上述检查无效的时间(例如,当前时间
    UserIsOnlineTimeWindow
  • 在某些关键点手动更新
    LastActivityDate
    (例如。, 如果您的站点是书店,可能会在何时更新
    LastActivityDate
    他们将项目添加到购物车中)

    • 我不知道你为什么投了反对票,这是一个有效的问题。你也可能永远看不到这个答案,但其他人可能也有同样的问题

      MembershipUser.IsOnline
      并不能非常准确地检查用户是否在线。根据,用户被确定为在线:

      如果当前日期和时间减去 UserIsOnlineTimeWindow属性值早于 用户的LastActivityDate

      这意味着用户可以在10秒后登录并注销,但仍被视为在线

      因此,在您的情况下,您登录、检查计数、注销、关闭浏览器、清除缓存等,但用户的
      LastActivityDate
      仍在上述假定窗口内。您可以做的是:

      • 缩短时间窗口(这会产生一些不必要的方面 (效果)
      • 注销个人时,将其
        LastActivityDate
        更新为 使上述检查无效的时间(例如,当前时间
        UserIsOnlineTimeWindow
      • 在某些关键点手动更新
        LastActivityDate
        (例如。, 如果您的站点是书店,可能会在何时更新
        LastActivityDate
        他们将项目添加到购物车中)