Один из вариантов, вместо установки таймера на стороне клиента для слепого перенаправления, заключается в том, чтобы таймер включил небольшой веб-сервис, который мог бы указывать, следует ли перенаправить пользователя. Это дает вам гораздо большую гибкость, вы можете перенаправить пользователя во многих случаях, включая:
- Сессия истекла
- Та же учетная запись пользователя, вошедшая с другого компьютера
- Сайт переходит в режим обслуживания, и вы хотите выгнать пользователей.
Я успешно использовал этот метод для работы с несколькими учетными записями пользователей. Что касается обработки сеанса, вы, скорее всего, захотите прослушать тайм-аут сеанса, даже затем сохранить его в хэш-таблице, время сеанса которой истекло.
Когда этот пользователь вызывает веб-сервис, вы удаляете их из хэша и сообщаете клиентскому коду о перенаправлении.
Еще одна приятная особенность этого типа системы заключается в том, что вы можете отслеживать, когда браузер подключается к серверу, чтобы вы могли лучше понять, кто еще находится в сети.
EDIT
В ответ на комментарий Ниже:
Я не думаю, что вызов публичного метода будет чище. Как только вы сделаете это, вы сделаете предположение, что все страницы имеют одну главную страницу или общий базовый класс. Я бы не хотел делать такое предположение. Кроме того, если вы намереваетесь использовать подход PageMethods, это не сработает, поскольку PageMethods должен быть статическим.
Я не совсем уверен, каково ваше намерение, но если бы вы собирались вызывать этот метод при каждом запросе, я бы сделал это, используя модуль http и подключившись к конвейеру; однако это работает только тогда, когда сделан запрос. Используя веб-сервис с таймером на стороне клиента, вы можете перенаправить пользователя, даже если он не выполняет никаких запросов.