13

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

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

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

即使在 FormsAuthentication.SignOut() 之后,我也尝试关注User.IsOnline = true 。但结果一无所获。

4

1 回答 1

15

AFAIK,FormsAuthentication.SignOut与会员系统没有直接关系。因此,您必须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);
于 2012-05-06T03:53:06.203 回答