在这里我的问题是有点怪,我只在我的生产服务器上遇到它。基本上,我在第二次Ajax调用时会丢失会话值。整个过程就像用户点击一个按钮来启动同步过程,其中涉及两个Ajax命中,第一个发布请求和成功完成这个第二个获取请求。会话清除第二个AJAX电话
我的代码是象下面这样:
jQuery代码:
//User clicks "SyncButton" to initiate sync process
$('#SyncButton').on('click', function (event) {
//Some UI Code
$.ajax({
type: 'POST',
beforeSend: startService, //startService has some UI code
url: "FirstAjaxURL",
data: null,
contentType: "application/json",
success: function (data) {
ServiceSuccess(data);
},
error: serviceError
});
});
function ServiceSuccess(data) {
var html = ''; //code to get html from data
$('#divSync').html(html);
if (!($('#delete').length > 0)) {
RenderBusinessGrid();
}
};
function RenderBusinessGrid() {
var allBusiness = "";
$.getJSON("SecondAjaxURL", function (data) {
//Some UI handling code
});
$('#divSyncDetails').height('400px');
}
MVC代码:
[HttpPost]
public string FirstAjaxURL()
{
//make some DB hits
//fetch data
//create couple of zip files
编辑2015年7月6日
//Unzip a zip file in one of the sub-directories. This zip file contains multiple sub-directories and files.
编辑2015年7月6日
//save them in two separate folders in separate folders under root directory
/*LOGS SUGGEST ALL SESSION KEYS WERE AVAILABLE HERE*/
return "some string result";
}
public ActionResult SecondAjaxURL()
{
/*LOGS SUGGEST SESSION KEYS NOT AVAILABLE HERE*/
//do some DB operation
return jsonResult;
}
什么都我迄今为止尝试:
应用程序池回收时检查IIS设置,他们似乎要被罚款
会话超时设置如果我离开系统空闲,它不超时
确认在第一个ajax中没有未处理的异常点击
Tri ED节约外应用程序的目录结构的zip文件
试图用$就更换$ .getJson(我知道它的愚蠢来尝试这一点,但你永远不知道... :)
注:在大多数情况下,会议的第二次ajax超时呼叫是用户第一次启动同步过程。虽然我们观察到这种情况发生在第二次或第三次时。
一些进一步的细节: 我检查事件日志,发现下面的错误,它记录了每次被记录在事件查看器:
事件代码:4005 事件消息:Forms身份验证失败的请求。原因:提供的票据无效。
请建议我还有什么可以尝试/验证以获得此问题的根本原因,它给我带来了很大的困扰。所有的指针都是受欢迎的。
感谢, 拉维
+1
您的应用程序是否托管在多台服务器上,并且负载均衡器进入画面? –
+1
你在你的web.config中设置了
+0
@nikhil:没有它的专用服务器没有负载平衡器什么的。它只是一个简单的基于MVC的SPA。 –