3

我正在寻找一种方法来防止 SessionState 在我将 AJAX 发布到控制器时刷新。

如果 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);

问题是每次我对控制器进行 POST 时会话都会不断刷新,我不希望它刷新。

4

1 回答 1

4

您可以Sessionstate在控制器上使用属性来防止它刷新会话超时。

[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]
public class JsonController : BaseController  

或者在 VB.Net 中:

<SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)>
Public Class JsonController Inherits BaseController

当然,这是在控制器上设置的,因此该控制器中的任何其他方法也不会刷新会话超时。

更新:
经过一番挖掘,我发现这篇文章介绍了一种定义每个操作方法的会话状态行为的方法。另一种解决方案可以在 ASP.Net MVC 中的 Disable Session state per-request 中找到

于 2013-05-15T14:12:59.197 回答