1
我正在使用jquery向可能需要一段時間返回的控制器方法發出ajax請求。我遇到的問題是,我無法重新加載頁面,直到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);
}
爲什麼我不能重新加載頁面,直到該方法完成?
代碼位於本地IIS中,只有一個瀏覽器實例打開。我沒有觸及Session ..上面的代碼是我正在做的唯一的事情。 – mdm20
即使只有一個瀏覽器擊中它,請求也不會停止,直到完成爲止。 IIS不會檢測到您取消了ajax請求並繼續等待所有10秒。如果你在<%@ Page聲明中有EnableSessionState =「True」,會話就不會被觸及,而是鎖定會話。 – aero