【问题标题】:MVC 4 Session Timeouts, Ajax pollingMVC 4 会话超时,Ajax 轮询
【发布时间】:2013-05-15 13:49:16
【问题描述】:

我正在寻找一种方法来防止在我向控制器发送 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);

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

【问题讨论】:

标签: asp.net-mvc vb.net jquery asp.net-mvc-4 session-timeout


【解决方案1】:

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

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

或者在 VB.Net 中:

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

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

更新:
经过一番挖掘,我发现this article 引入了一种方法来定义每个操作方法的会话状态行为。另一个解决方案可以在Disable Session state per-request in ASP.Net MVC找到。

【讨论】:

  • 感谢您的回复,我尝试了类似的方法,但不幸的是,它禁用了整个 Session,我无法检查 Session 中的变量是否存在。
  • 我可能是错的。我不认为您可以禁用会话刷新并同时访问它。
  • 好的,谢谢您的帮助,如果我使用 SessionState 属性并从 System.Web.HttpContext.Session 获取 Session ?
  • 不要认为这有什么不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 2013-03-20
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 2019-06-01
  • 2013-12-11
相关资源
最近更新 更多