通过jquery ajax请求检查aspx会话是否过期

本文关键字:会话 是否 过期 aspx 检查 jquery ajax 请求 通过 | 更新日期: 2023-09-27 18:18:52

我使用asp.net来管理我网站的会话状态。我还使用jquery和$.ajax(...)进行同步和异步请求。

通常,在asp.net中,如果用户会话超时,可以通过完全或部分回发来检测。但是,假设部分或全部回发没有发生,因为我使用jquery ajax调用静态c# web方法。知道会话超时的最好方法是什么?

通过jquery ajax请求检查aspx会话是否过期

我会创建一个javascript间隔,以便不时发出ajax请求,如下所示:

<script>
$(document).ready(function () {
    setInterval(function (){
        $.ajax({
            url: 'WebMethodhere',
            type: 'GET',
            success: function (result) {
                if(result!='true')
                {
                    //It means that the Session expired, so do somethig
                }
            }
        })
    },3000);
});
</script>

在这个例子中我使用了3000ms,但是时间由您决定。

你的webmethod可以很简单:

if(Session["WhateverSession"]==null)
{
    return false;
}
else
{
    return true;
}

有两种方法可以实现。

方法#1:创建一个通用处理程序,并实现ireadonlysessionstate接口,从该处理程序访问会话变量。使用ajax get请求并访问这个通用处理程序,该处理程序提供会话是否处于活动状态。

方法# 2:布置一个公共方法的页面(WebMethod)(使用System.Web.Services)和访问该方法通过ajax get请求提供会话是否活跃。

但是所有这些方法都应该只用于检查会话是活动的还是过期的。但如果会话是活跃的,它会更新您的会话-这可能不是理想的。也请勾选该选项。

最简单的解决方案是每隔一段时间强制返回一个帖子。

<meta http-equiv="refresh" content="1800">