一直致力于检测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中必须使用setInterval函数
setInterval(function(){
$.get('coolpage.aspx/hello');
}, 300000); // 5mins
如果会话已经过期,那么销毁会话并返回"expired"。调用ajax(document.ready)之后,必须使用if和else检查会话值。