Как бы предотвратить истечение сеанса при использовании AJAX? - PullRequest
2 голосов
/ 18 сентября 2010

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

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 минут работы на странице панели обновления пользователь перенаправляется на заставку приложения.

Есть ли способ сбросить или расширить метатег при асинхронной обратной передаче?Или, возможно, лучший способ сделать это полностью?

Ответы [ 3 ]

1 голос
/ 30 сентября 2010

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

Вместо страницы META REFRESH используйте этот 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 голосов
/ 23 сентября 2010

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

0 голосов
/ 18 сентября 2010

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

...