2012-05-06 10 views
13

Ich erstelle derzeit eine Website mit Visual Studio 2010. Ich verwende das Standardmitgliedschaftsschema in SQL Server 2008 für die Benutzerauthentifizierung. Jetzt stehe ich vor dem folgenden Problem.MembershipUser.IsOnline ist auch nach dem Abmelden wahr

Wenn sich ein Benutzer abmeldet, sollte die membership.IsOnline-Eigenschaft dieses Benutzers auf false festgelegt werden. Jedoch, dass es nicht passiert; membership.IsOnline-Eigenschaft dieses Benutzers ist immer noch gültig.

Ich verwende das LoginStatus-Steuerelement, um eine Abmeldelinks für den Benutzer bereitzustellen.

Ich habe versucht, User.IsOnline = true even after FormsAuthentication.SignOut() zu folgen. Aber ergibt nichts.

Antwort

15

AFAIK, hat keine direkte Beziehung zum Mitgliedschaftssystem. Daher müssen Sie die manuell aktualisieren, wie Sie in Ihrer Frage erwähnt haben. Und verwenden Sie Membership.UserIsOnlineTimeWindow anstelle von -2.

Von MSDN

Der UserIsOnlineTimeWindow Eigenschaftswert wird während des Gesprächs zu GetNumberOfUsersOnline geprüft. Wenn das LastActivityDate für einen Benutzer größer als das aktuelle Datum und die aktuelle Uhrzeit minus UserIsOnlineTimeWindow Wert in Minuten ist, wird der Benutzer online als betrachtet. Sie können online feststellen, ob ein Mitgliedschaftsbenutzer mit der IsOnline-Eigenschaft der MembershipUser-Klasse als betrachtet wird.

MembershipUser user = Membership.GetUser(false); 

FormsAuthentication.SignOut(); 

user.LastActivityDate = DateTime.UtcNow.AddMinutes(-(Membership.UserIsOnlineTimeWindow + 1)); 
Membership.UpdateUser(user); 
+0

Danke Mehdi Golchin. Es funktioniert wirklich. Danke vielmals. –

+0

Vielen Dank für die zusätzlichen Informationen. Dies wird mir bei weiteren Ansätzen helfen. –

+0

Gern geschehen :) –