Подтвердить что ты не робот

MemberhipUser.IsOnline верен даже после выхода из системы

В настоящее время я создаю веб-сайт с использованием Visual Studio 2010. Я использую схему членства по умолчанию в SQL Server 2008 для аутентификации пользователей. Теперь я столкнулся со следующей проблемой.

Когда пользователь выходит из системы, свойство membership.IsOnline этого пользователя должно быть установлено в false. Однако этого не происходит; свойство membership.IsOnline этого пользователя по-прежнему верен.

Я использую элемент управления LoginStatus, чтобы предоставить ссылку для выхода пользователю.

Я попытался выполнить User.IsOnline = true даже после FormsAuthentication.SignOut(). Но ничего не получается.

4b9b3361

Ответ 1

AFAIK, FormsAuthentication.SignOut не имеет прямого отношения к системе членства. Таким образом, вы должны обновить LastActivityDate вручную, как вы упомянули в своем вопросе. И используйте Membership.UserIsOnlineTimeWindow вместо -2.

Из MSDN

Значение свойства UserIsOnlineTimeWindow проверяется во время вызова для GetNumberOfUsersOnline. Если LastActivityDate для пользователя больше текущей даты и времени минус UserIsOnlineTimeWindow в минутах, тогда пользователь считается онлайн. Вы можете определить, считается ли пользователь членства онлайн с свойством IsOnline класса MembershipUser.

MembershipUser user = Membership.GetUser(false);

FormsAuthentication.SignOut();

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