gpt4 book ai didi

asp.net-mvc - MVC 4 session 超时、Ajax 轮询

转载 作者:行者123 更新时间:2023-12-01 01:08:07 25 4
gpt4 key购买 nike

我正在寻找一种方法来防止当我向 Controller 发送 AJAX 消息时刷新 SessionState。

如果 SessionState 已过期,此 Controller 将返回 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);

问题是每次我向 Controller 执行 POST 时 session 都会刷新,我不希望它刷新。

最佳答案

您可以在 Controller 上使用Sessionstate属性来防止刷新 session 超时。

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

或者在 VB.Net 中:

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

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

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

关于asp.net-mvc - MVC 4 session 超时、Ajax 轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16566867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com