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

时间:2015-10-21 17:19:55

标签: c# jquery asp.net ajax session

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

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

3 个答案:

答案 0 :(得分:1)

我会创建一个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>

我在这个例子中使用了3000毫秒,但是时间取决于你。

您的网络方法可能非常简单:

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

答案 1 :(得分:0)

有几种方法可以实现它。

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

方法#2:使用[WebMethod](使用System.Web.Services)装饰页面的公共方法,并通过ajax get请求访问此方法,该请求提供会话是否处于活动状态。

但是所有这些方法都应该仅用于检查会话是活动的还是已过期的。但是,如果会话处于活动状态,它会更新您的会话 - 这可能并不可取。请检查该选项。

答案 2 :(得分:0)

最简单的解决方案是以一定的间隔强制退回帖子。

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