2010-09-17 3 views
2

У меня есть веб-сайт .Net 3.5, который использует проверку подлинности Windows и заканчивает сеанс, используя метатег на prerender моего базового класса главной страницы.Как я могу предотвратить истечение сеанса при использовании AJAX?

protected override void OnPreRender(EventArgs e) 
{ 
    base.OnPreRender(e); 
    if (Response.ContentType == "text/html") 
     this.Page.Header.Controls.Add(new LiteralControl(
      String.Format("<meta http-equiv='refresh' content='{0};url={1}'>", 
      SessionLengthMinutes * 60, SessionExpireDestinationUrl))); 
} 

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

Есть ли способ сбросить или расширить метатег на async-обратную передачу? Или, может быть, лучший способ добиться этого?

ответ

1

Лучший способ добиться этого полностью - использовать javascript. Это предотвратит проблемы, связанные с метаобновлением, если ваша страница отмечена закладкой.

На месте страницы META использования ОБНОВИТЬ это JavaScript:

<script type="text/javascript"> 
    var _timerID = setTimeout("window.location='splash-url'", 900000); //15 mins 
</script> 

Когда вы сделаете запрос из панели обновления использовать этот JavaScript:

<script type="text/javascript"> 
    clearTimeout(_timerID); 
    _timerID = setTimeout("window.location='splash-url'", 900000); //15 mins 
</script> 
0

В прошлом я использовал WebMethod (EnableSession = истина) атрибута на методах, которые отвечают на AJAX вызовы

0

Вы можете использовать запрос AJAX, чтобы сохранить сессию в живых, а также. Это будет работать, пока пользователь открыл вашу страницу в браузере. См. http://808.dk/?code-ajax-session-keepalive

Смежные вопросы