Asp.net mvc MVC4会话超时,Ajax轮询
我正在寻找一种方法,防止在向控制器发送AJAX帖子时刷新SessionState 如果SessionState已过期,此控制器将返回JSON true/false对象Asp.net mvc MVC4会话超时,Ajax轮询,asp.net-mvc,vb.net,jquery,asp.net-mvc-4,session-timeout,Asp.net Mvc,Vb.net,Jquery,Asp.net Mvc 4,Session Timeout,我正在寻找一种方法,防止在向控制器发送AJAX帖子时刷新SessionState 如果SessionState已过期,此控制器将返回JSON true/false对象 Public Class JsonController Inherits BaseController Function SessionCheck() If Session("Contact") Is Nothing Then Return Json(JsonRespons
Public Class JsonController
Inherits BaseController
Function SessionCheck()
If Session("Contact") Is Nothing Then
Return Json(JsonResponseFactory.ErrorResponse("Invalid contact"))
End If
Return Json(JsonResponseFactory.SuccessResponse())
End Function
End Class
Javascript:
function session_check_function() {
if (!session_check_complete)
return;
session_check_complete = false;
jQuery.post(
base_url + 'json/SessionCheck',
{},
function (data) {
if (!data.Success) {
jQuery('#session-modal').modal('show');
} else {
jQuery('#session-modal').modal('hide');
}
session_check_complete = true;
}
).fail(function () {
jQuery('#session-modal').modal('show');
session_check_complete = true;
});
}
var session_check_complete = true;
var session_check = setInterval(function () { session_check_function(); }, 2500);
问题是每次我向控制器发送帖子时,会话都会不断刷新,我不希望它刷新。您可以在控制器上使用
Sessionstate
属性来防止它刷新会话超时
[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]
public class JsonController : BaseController
或在VB.Net中:
<SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)>
Public Class JsonController Inherits BaseController
公共类JsonController继承BaseController
当然,这是在控制器上设置的,因此该控制器中的任何其他方法也不会刷新会话超时
更新:在深入研究之后,我发现了一种方法,它引入了一种定义每个操作方法的会话状态行为的方法。另一个解决方案可以在查看关于保持会话活动的问题:@Kamyar问题是每次我向控制器发送帖子时,会话都会刷新,我不想刷新。谢谢您的回复,我尝试过类似的方法,但不幸的是,它禁用了整个会话,我无法检查会话中是否存在变量。我可能是错的。我不认为您可以禁用会话刷新并同时访问它。好吧,谢谢您的帮助,如果我使用SessionState属性并从System.Web.HttpContext.session获取会话,我认为这不会有任何区别。