Мы используем этот подход на работе, так что когда пользователи загружают данные в отдельный, но одновременный сеанс в веб-сервис, мы можем отследить 90% случаев, когда истекло время ожидания, и тут же предупредить пользователя.
Мы не улавливаем каждый случай, потому что:
- Обработчик события тайм-аута сеанса в global.asax ненадежно вызывается в момент истечения срока действия (IIRC)
- Пользователь мог закрыть окно браузера в это время.
Мне известны два общих подхода:
- Любое действие пользователя вызывает обновление LastActionTime в таблице пользователей. Использование этого значения + 20 минут (или любого другого значения времени ожидания сеанса) является довольно хорошим показателем того, кто вошел в систему
- Небольшая панель AJAX, обновляющаяся каждые несколько секунд (связана с предыдущей опцией).