Сеанс ASP.NET истекает в запросе Ajax

Здесь уже задано много вопросов о том, что делать, когда сеанс истекает при выполнении запроса Ajax. Одним из обходных путей является размещение заголовка в ответе, который выполняет перенаправление на страницу входа.

Мой сайт выполняет только обратную передачу первой страницы, затем все запросы Ajax, из-за чего срок действия сеанса истекает в определенное время, но есть ли возможность обновить тайм-аут сеанса в запросах Ajax (в обработчике ASP, который посещает запрос) , так что сеанс действительно истекает, но только тогда, когда я истечет время ожидания без каких-либо запросов к серверу вообще?


person Soulbe    schedule 22.10.2010    source источник
comment
Я не уверен, правильно ли я понимаю ваш вопрос. Вы сказали, обновите время ожидания сеанса в запросе AJAX. Обычно вам не нужно делать это явно. Несмотря на то, что запрос является запросом AJAX, жизненный цикл страницы ничуть не меняется. Модули/обработчики будут работать так же, как и должны. Следовательно, информация, связанная с вашим сеансом, будет автоматически обновляться.   -  person Rahul Soni    schedule 22.10.2010
comment
Хорошо, как и сказал ovm, сеанс должен поддерживаться запросом Ajax. Я думал, что при выполнении запроса будет сделан запрос к серверу, но жизненный цикл страницы не произойдет. Спасибо   -  person Soulbe    schedule 22.10.2010


Ответы (1)


Вы можете реализовать KeepAlive SessionObserver (JavaScript) и самостоятельно отслеживать время ожидания сеанса. Таким образом, вы можете перехватывать SessionTimeout бездействующих пользователей, перенаправлять их с помощью сообщения и других полезных вещей.

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

Например,

[WebMethod( EnableSession = true )]
public string WebServiceMethod(){ return "I'm session aware.";}
person Ole Viaud-Murat    schedule 22.10.2010