ajax 请求是不是会导致更新 asp.net 会话?

Posted

技术标签:

【中文标题】ajax 请求是不是会导致更新 asp.net 会话?【英文标题】:Does an ajax request cause an asp.net session to be renew?ajax 请求是否会导致更新 asp.net 会话? 【发布时间】:2021-12-06 10:44:35 【问题描述】:

一直致力于检测 asp.net 项目的超时。有一个 ajax 函数,每 5 秒检查一次会话是否已过期。如果没有 ajax 函数检查,它实际上会在一分钟后过期,但如果我保持该函数打开,它会不断向我发送“活动”状态。所以我想知道,我的 ajax 函数/请求是否使会话保持活动状态?

Ajax 函数:

             function isSessionAlive()
                await jQuery.ajax(
                type: "POST",
                url: 'coolpage.aspx/hello',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) 
                    console.info("status: ", response);
                ,
                failure: function (response) 
                    console.info("status: ", response);
                ,
                cache:false
            );

Asp.net 页面方法

    //[WebMethod(EnableSession = true)]
    [WebMethod]
    public static string hello()
    
        //return (HttpContext.Current.Session["dummy"] == null) ? "expired" : "active";

        if (HttpContext.Current.Session != null)
        
            if (HttpContext.Current.Session.IsNewSession)
            
                string cookieHeader = HttpContext.Current.Request.Headers["Cookie"];
                if ((null != cookieHeader) && (cookieHeader.IndexOf("ASP.NET_SessionId") >= 0))
                
                    return "expired";
                
            
        

        return "active";

        // return HttpContext.Current.User.Identity.IsAuthenticated ?  "active":"expired";

    

【问题讨论】:

是的!你的情况好像是这样!!检查会话超时的 AJAX 请求实际上使您的会话保持活动状态。对于后端的每个请求,滑动会话到期窗口都会重置。您可以在 cookie 中保存会话到期时间并进行验证,而不是与服务器检查。 谢谢,我也很怀疑。决定创建一个隐藏元素,并在检查任何变量的会话空值后在回发时更新它。 ...再次感谢。 【参考方案1】:

如果您的会话已过期,请销毁您的会话并返回“过期”。调用 ajax(document.ready) 后,您必须使用 if 和 else 检查会话值。

【讨论】:

【参考方案2】:

你必须在 ajax 中使用 setInterval 函数。

setInterval(function()
   $.get('coolpage.aspx/hello');
, 300000); // 5mins

【讨论】:

谢谢 .... 是的,fn 实际上是从间隔调用的(未显示)。

以上是关于ajax 请求是不是会导致更新 asp.net 会话?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc 4控制器并行执行多个ajax调用

为啥我的 ASP.NET MVC 站点中的此 AJAX 请求会触发预检检查?

使用 Castle 单例是不是会导致 ASP.NET Web 应用程序中的争用

Asp.Net jQuery $.getJSON 有时会导致整页回发?

ASP.NET网站中实现Ajax的跨域请求

更新面板 AJAX asp.net 后运行脚本