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でホストされており、ブラウザインスタンスが1つだけ開いています。私はセッションに触れていない。上のコードは私がやっている唯一のものです。 – mdm20
ブラウザが1台しかない場合でも、要求が完了するまで要求は停止しません。 IISは、ajaxリクエストをキャンセルしたことを検出せず、すべての10秒間待機するように継続します。あなたが<%@ Page宣言でEnableSessionState = "True"を持っていれば、セッションはロックされるか、セッションがロックされるかのいずれかに触れる必要はありません。 – aero