Ajax通讯异常12002,长时间运行jQuery Ajax调用

我有jQuery AJAX调用请求从WEB API服务进行汇总计数。 WEB API处理请求并调用传递请求参数的存储过程(sql server)。存储过程需要更长的时间(超过10分钟来处理请求,如果存储过程需要超过10分钟,jQuery AJAX调用报告状态码为12002或12152的未知错误(这些错误与连接问题有关),但Web Server在10分钟后收到存储过程的结果,IE8.0,IE9.0,firefox出现问题,但即使等待10分钟以上,Chrome仍然收到响应。是否有解决方案服务器和客户端之间的通信是活跃的我已经尝试将连接请求头从ajax更改为“关闭”,“打开”,“保持活动”,没有任何效果。请帮我解决。长时间运行jQuery Ajax调用

Java脚本代码。

$.ajax({

type: "post",

url: URLPrefix + 'api/querydispatcher/summary',

data: s,

success: function (data) {

window.clearInterval(int);

$('#wait').hide();

$('#CancelSummary').hide();

$('#backgroundmodal').hide();

$("#tResultTotals").slideDown('slow');

DeserializeJSon(eval(data));

if (!CancelSummaryRequest) {

CancelSummaryRequest = true;

$('#DownloadDetailedReport').show();

}

else {

$('#tResultTotals').hide();

}

},

$('#wait').hide();

$('#CancelSummary').hide();

$('#backgroundmodal').hide();

error_Dialog(request.responseText);

}

});

}

Server Side (WEB API) code.

[WebInvoke(UriTemplate = "summary", Method = "POST")]

public List GetSummaryReport_Queue(JsonValue SummaryXML)

{

MyContext db = new MyContext();

DateTime StartTime = DateTime.Now;

string sumXML = SummaryXML["XMLJson"].ToString().Replace(@"\", "").Replace(@"""", "");

//These are two codes created by JSon @ the end of the String that need to be trim off.

sumXML = sumXML.Replace("u000du000a", "");

List results = null;

XElement xxml = XElement.Parse(sumXML);

string ReportID = xxml.Descendants("ReportId").FirstOrDefault().Value;

string err = "";

try

{

results = db.fnReportResult(sumXML).ToList();

}

catch (Exception e)

{

err = e.Message + " : "+(e.InnerException!=null?e.InnerException.Message : "");

throw e;

}

finally {

///--- Record Audit Info.

double RunningTime = DateTime.Now.Subtract(StartTime).TotalMilliseconds;

string parameters = "ApplicationType:Query_Dispatcher" + "||User:" + SummaryXML["UserId"].ToString().Replace(@"\", "").Replace(@"""", "") +

"||Session:" + SummaryXML["Session"].ToString().Replace(@"\", "").Replace(@"""", "") +

"||Running Time:" + RunningTime.ToString() + "||Request Type:Summary Report" +

"||Report ID:" + ReportID +

"||Error:" + err;

Audit SaveAudit = new Audit();

SaveAudit.WriteAudit("Query_Builder", parameters);

//####-Recording Audit Info

}

return results;

}

+2

我不会让连接等待10分钟 - 我会向'/ whatever'发出'POST' req,它会立即用'202 Accepted'和正在创建的资源的URL来响应。 '/不管/ hashOfSomething'。然后在10分钟后访问该URL - 如果资源已准备就绪,则可以使用它,否则在重试之后N分钟。 –

2013-02-08 15:17:11

+0

我该如何重新访问客户端的URL(/ whatever /)以检查记录是否已被处理? –

2013-02-08 15:51:48

+0

有一个“超时”选项的Ajax调用 - 你有没有试过将其设置为高于600000毫秒? –

2013-02-08 15:58:51

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值