Время сеанса истекло - PullRequest
       64

Время сеанса истекло

0 голосов
/ 27 апреля 2011

Я занимаюсь разработкой веб-сайта с использованием ASP.Net 3.5 C #. Я перечисляю всех пользователей Онлайн (пользователей, которые вошли на мой сайт) на моем сайте. Я хочу отслеживать и обновлять статус пользователя в базе данных, когда пользователь вышел из системы, просто закрыл браузер или перешел на другой сайт. Во всех этих случаях я хочу обновить статус пользователя как «Выйти из системы».

Как я могу двигаться вперед с этим.

Спасибо Вивек

Ответы [ 4 ]

0 голосов
/ 27 апреля 2011

Сначала проверьте мой ответ на этот другой вопрос:

Вы не сможете сразузакройте сеанс и отследите это изменение, если какой-либо пользователь закроет браузер, выключит компьютер или что-то в этом роде.Это достигается путем игры с тайм-аутом сессии.

Другой возможностью может быть рассмотрение пользователя в сети, если он запускает какую-то операцию с сервером через некоторый интервал времени, что будет реализовано в логике вашего сервера.

Выход из системы должен легко отслеживатьсяпотому что это действие "человеческого пользователя".Просто внедрите событие «UserLogout» в свой класс диспетчера аутентификации или любой другой класс, обрабатывающий аутентификацию, и отслеживайте там выходы.

Действия пользователя на стороне клиента, такие как переход на другую страницу или закрытие веб-браузера, не могут быть отслежены, поскольку технологияограничения: API не хватает в этой области.Это больше из-за веб-парадигмы и ее принципов.Вам нужно будет пропустить это.

0 голосов
/ 27 апреля 2011

Законный выход из системы (то есть выход из системы, нажав на кнопку выхода из системы и т. Д.) Может быть легко отслежен.Вам просто нужно обработать событие и отметить, что их статус базы данных отключен.

Однако закрытие браузера - это то, с чем я никогда не добивался успеха.Вы получите много решений через Интернет, которые скажут вам захватить кнопку закрытия, а затем запрос ajax и т. Д., Но я не добился успеха ни с одним из них.

(Такие вещи, как Session_End могут пригодиться, но естьЯ понял, что это событие не будет запущено, если вы используете что-то кроме режима сеанса IN-PROC, так что это ненадежно).

0 голосов
/ 27 апреля 2011

Вы действительно не знаете, закрыл ли пользователь браузер или нет, или он перешел на другой сайт.Я думаю, что вам нужно использовать какой-то элемент управления AJAX, который будет отправлять некоторые сообщения на сервер за определенный промежуток времени, чтобы убедиться, что пользователь просматривает ваш сайт.

0 голосов
/ 27 апреля 2011

Когда пользователь нажимает кнопку, вы можете просто обработать событие щелчка на стороне сервера (в коде позади) и затем зарегистрировать изменение статуса.

Для случая, когда браузер закрытвы можете обработать событие Session_End в global.asax, которое срабатывает при завершении сеанса:

public void Session_End(object sender, EventArgs e)
{
    // Fires when the session ends
}
...