asp.net web api - Long running jQuery Ajax call -
asp.net web api - Long running jQuery Ajax call -
i have jquery ajax phone call request summary count web api services. web api process request , calls stored procedure (sql server) passing request parameters. stored procedure takes longer time (more 10 minutes process request. if stored procedure takes more 10 minutes jquery ajax phone call reporting unknown error status code 12002 or 12152(these errors relates connectivity issue) web server receives result stored procedure after 10 minutes. problem occuring on browser ie8.0 , ie9.0, firefox chrome receiving response if wait beyond 10 minutes. there solutions maintain communication live between server , client. have tried changing connection request header ajax "close","open","keep-alive" nil works. pls help me out.
java script code.
$.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<queryresult> getsummaryreport_queue(jsonvalue summaryxml) { mycontext db = new mycontext(); datetime starttime = datetime.now; string sumxml = summaryxml["xmljson"].tostring().replace(@"\", "").replace(@"""", ""); //these 2 codes created json @ end of string need trim off. sumxml = sumxml.replace("u000du000a", ""); list<queryresult> results = null; xelement xxml = xelement.parse(sumxml); string reportid = xxml.descendants("reportid").firstordefault().value; string err = ""; seek { results = db.fnreportresult(sumxml).tolist(); } grab (exception e) { err = e.message + " : "+(e.innerexception!=null?e.innerexception.message : ""); throw e; } { ///--- 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 } homecoming results; }
browsers have built in, internal timeouts may effecting this. see stackoverflow question more info on it: browser timeouts
as others have said, waiting 10 minutes ajax response bad, , browsers time out in default settings - if set ajax timeout absurdly high. uncertainty ever work.
you others have said , run query send users link results. however, solution run query on cron every x minutes , cache results. way, users can view results on demand , not have wait new url or wait prolonged period of time.
jquery asp.net-web-api
Comments
Post a Comment