Asp.net mvc MVC4会话超时,Ajax轮询

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

我正在寻找一种方法,防止在向控制器发送AJAX帖子时刷新SessionState

如果SessionState已过期,此控制器将返回JSON true/false对象

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获取会话,我认为这不会有任何区别。