注销后,MembershipUser.IsOnline为true

Kri*_*Dey 13 membership asp.net logout

我目前正在使用Visual Studio 2010创建一个网站.我正在使用SQL Server 2008中的默认成员资格架构进行用户身份验证.现在我面临以下问题.

用户注销时,该用户的membership.IsOnline属性应设置为false.然而,它没有发生; 该用户的membership .IsOnline属性仍然是true.

我正在使用LoginStatus控件向用户提供注销链接.

即使在FormsAuthentication.SignOut()之后,我也试图关注User.IsOnline = true.但结果没什么.

Meh*_*hin 15

AFAIK,FormsAuthentication.SignOut与Membership系统没有直接关系.因此,您必须LastActivityDate如您在问题中提到的那样手动更新.并使用Membership.UserIsOnlineTimeWindow而不是-2.

来自MSDN

在调用GetNumberOfUsersOnline期间,将检查UserIsOnlineTimeWindow属性值.如果用户的LastActivityDate大于当前日期和时间减去UserIsOnlineTimeWindow值(以分钟为单位),则认为该用户在线.您可以使用MembershipUser类的IsOnline属性确定成员资格用户是否在线.

MembershipUser user = Membership.GetUser(false);

FormsAuthentication.SignOut();

user.LastActivityDate = DateTime.UtcNow.AddMinutes(-(Membership.UserIsOnlineTimeWindow + 1));
Membership.UpdateUser(user);
Run Code Online (Sandbox Code Playgroud)