2010-01-05 2 views
4

Например, у меня есть веб-приложение, использующее jQuery в качестве основы на стороне клиента. Теперь большинство страниц функционируют с помощью AJAX и общаются с сервером с помощью Generic Handlers (.ashx).Управление таймаутами сеанса в ASP.NET при использовании ASP.NET GenericHandlers

Теперь у меня есть проблема с тем, что я прошу об этом, чтобы узнать, какое наилучшее решение для обработки этих запросов, когда истекает срок действия моей пользовательской сессии.

Например, пользователь вошел в систему, оставил свой браузер в течение 15 минут, а затем нажал кнопку, чтобы создать запрос к обработчику, теперь со стороны сервера, когда я пытаюсь прочитать переменную сеанса, очевидно, что она будет быть пустым (сеанс истек). Каков наилучший способ перенаправить пользователя на страницу входа в систему.

ответ

2

Мы рассматриваем эту ситуацию несколько иным образом. Вместо того чтобы пытаться заставить все вызовы jQuery иметь дело с таким видом ошибки, мы внедрили параллельную систему тайм-аута на клиенте, используя javascript. За минуту до того, как сессия ASP.NET закончится, мы выведем диалоговое окно в браузере, чтобы предупредить пользователя: «Вы были неактивны и собираетесь выйти из системы. Нажмите здесь, чтобы оставаться в системе». Мы также включили небольшой обратный отсчет в диалоговом окне. Если они нажмут, чтобы войти в систему, мы отправим на сервер другой вызов jQuery для сброса таймаута сеанса.

Таким образом, если у пользователя нет отключенного javascript (в этом случае приложение не работает в любом случае), нет возможности, что мы вызываем вызов jQuery после того, как сессия ASP.NET завершилась.