我目前正在使用Visual Studio 2010创建一个网站。我正在使用SQL Server 2008中的默认成员资格架构进行用户身份验证。现在我面临以下问题。
当用户注销时,该用户的membership.IsOnline属性应设置为false。然而,它没有发生;该用户的membership .IsOnline属性仍然是true。
我正在使用LoginStatus控件向用户提供注销链接。
我试图关注User.IsOnline = true even after FormsAuthentication.SignOut()。但结果没什么。
答案 0 :(得分:15)
AFAIK,FormsAuthentication.SignOut与会员制度没有直接关系。因此,您必须按照问题中的提及手动更新LastActivityDate
。并使用Membership.UserIsOnlineTimeWindow代替-2。
来自MSDN
在调用期间检查UserIsOnlineTimeWindow属性值 到GetNumberOfUsersOnline。如果用户的LastActivityDate是 大于当前日期和时间减去 UserIsOnlineTimeWindow值以分钟为单位,然后考虑用户 线上。您可以确定是否考虑成员资格用户 在线使用MembershipUser类的IsOnline属性。
MembershipUser user = Membership.GetUser(false);
FormsAuthentication.SignOut();
user.LastActivityDate = DateTime.UtcNow.AddMinutes(-(Membership.UserIsOnlineTimeWindow + 1));
Membership.UpdateUser(user);