我正在使用jquery向控制器方法发出ajax请求,这可能需要一段时间才能返回。我遇到的问题是我无法重新加载页面,直到ajax请求完成..它只是挂起,直到控制器方法完成,然后页面重新加载。
这是我的ajax请求。
$.ajax({ async:true, type: "POST", url: url, data: senddata, dataType: "xml", success: GetLayerFeaturesCallback });
我正在使用AsyncController并等待10秒钟返回。
public void GetFeaturesAsync(int layerId, BoundingBox bbox, int maxFeatures = 50)
{
AsyncManager.OutstandingOperations.Increment();
Task task = Task.Factory.StartNew(() => {
System.Threading.Thread.Sleep(10000);
});
task.ContinueWith(t => {
AsyncManager.Parameters["element"] = new XElement("TEST");
AsyncManager.OutstandingOperations.Decrement();
});
}
public XmlActionResult GetFeaturesCompleted(XElement element)
{
return new XmlActionResult(element);
}
为什么我不能在该方法完成之前重新加载页面?
答案 0 :(得分:0)
可能是您的应用程序中的死锁,或者允许处理的线程或连接数(每个ip)受到Web服务器的限制。
在处理长请求时,您可以从其他浏览器或其他计算机打开任何其他页面吗?
asp.net中的编辑会话也会导致锁定。除非您已将页面的会话标记为只读,否则一次只能有一个请求访问会话。