2012-05-06 9 views
13

私は現在Visual Studio 2010を使用してWebサイトを作成しています。ユーザー認証のためにSQL Server 2008の既定のメンバーシップスキーマを使用しています。今私は次の問題に直面しています。MembershipUser.IsOnlineはログアウト後もtrueです

ユーザーがログアウトすると、そのユーザーのmembership.IsOnlineプロパティをfalseに設定する必要があります。しかし、それは起こっていません。そのユーザーのIsoOnlineプロパティはまだtrueです。

私はLoginStatusコントロールを使ってユーザーにログアウトリンクを提供しています。

私はUser.IsOnline = true even after FormsAuthentication.SignOut()に従いました。しかし、何も結果はありません。

答えて

15

AFAIK、FormsAuthentication.SignOutはMembershipシステムと直接の関係はありません。したがって、質問に記載されているように手動でLastActivityDateを更新する必要があります。 -2の代わりにMembership.UserIsOnlineTimeWindowを使用してください。 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); 
+0

ありがとうMehdi Golchin。それは実際に動作します。どうもありがとう。 –

+0

追加情報ありがとうございました。これはさらなるアプローチについて私を助けます。 –

+0

あなたは大歓迎です:) –

関連する問題