Каков наилучший способ определить "выход пользователя из системы" на сервере IIS в С#/Asp.Net?
У меня есть приложение, в котором зарегистрированные пользователи могут инициировать длительные действия на сервере. Эти действия необходимо прекратить, когда пользователь выйдет из системы.
Это не проблема, когда пользователь нажимает на выход из системы, но как я могу определить, что пользователь вышел из системы, например, в случае сбоя браузера пользователя, пользователь теряет связь и т.д.
Сделайте короткий тайм-аут сеанса приложения и выполните какой-либо опрос (например, запрос AJAX) к веб-приложению.
Опрос заботится о сохранении сеанса, и если браузер закрыт без соответствующего выхода из системы или он выходит из строя, он прекращается, и сеанс заканчивается быстро.
Некоторые онлайн-банки, такие как HSBC, реализуют что-то вроде этого, просто вызывая всплывающее окно через 1 минуту, где нет ответа пользователя ( например, нажатие кнопки OK) закрывает окно и выводит их из системы.
Метод, который я бы предпочел, - это таймер JavaScript, который перенаправляется на выход, а затем на страницу входа в систему, запуская вызов AJAX на сервер, чтобы завершить ваш длительный процесс для этого пользователя. Полагаясь на Session End, вы можете немного раздражать пользователя.
Это невозможно. Браузер работает на другом компьютере и не сообщает серверу, когда он сбой!