2012-05-06 26 views
13

我目前正在使用Visual Studio 2010創建一個網站。我在SQL Server 2008中使用默認的成員資格架構進行用戶身份驗證。現在我正面臨以下問題。MembershipUser.IsOnline即使在註銷後也是如此

當用戶註銷時,該用戶的membership.IsOnline屬性應該設置爲false。但是,這並沒有發生;該用戶的在線財產仍然是真實的。

我正在使用LoginStatus控件向用戶提供註銷鏈接。

我試過按照User.IsOnline = true even after FormsAuthentication.SignOut()。但結果沒有。

回答

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); 
+0

感謝Mehdi Golchin。真的行。非常感謝。 –

+0

感謝您提供其他信息。這將有助於我進一步的做法。 –

+0

不客氣:) –

相關問題