従来のMVC 5 Webアプリケーションでは、長時間実行されているアクションにajaxコールをかけるボタンをクリックした後でもブラウジングを続行できるようにしたいと考えています。なぜajaxコールの後に他のページを参照できないのですか?
(注:アクションがvoid
を返します - 私は応答に興味を持っていないです)
私はアクションが完了するまで、他のすべての要求を行うことができませんボタンをクリックします。
編集:ここでははAjaxコードです:
$('#EmailReport') //
.click(function() {
$.ajax({
type: "POST",
url: '/Home/EmailReport',
complete: function() {console.log("done")},
async: true
});
});
コントローラ
[HttpPost]
public async Task EmailReport()
{
// for testing - sleep for 10 seconds
await Task.Delay(TimeSpan.FromSeconds(10));
}
ここでは、クロームのdevのツールでスクリーンショットです:
EmailReport
は、AJAX呼び出しで、下部の2つの要求は、私は別のページを参照しようとしている - あなたが最初の要求を見ることができるように、誰もが任意のアイデアをどのように私を持っていますpending
であり、任意の後続の要求はcancelled
ですこの問題を解決またはトラブルシューティングできますか?
クライアントに焦点を当てるのではなく、サーバーを見てください。長時間実行されるアクションは、サーバーの処理中にサーバーを完全に閉鎖しますか? –
'EmailReport'アクションでスレッドを作成します。このアクションは、バックグラウンドで実行され、HTTP 200応答を返します。経由での応答を待つことはありません。 AJAX。 –
これは、ローカルマシンで発生します。このマシンでは、前回の処理が完了するまで、IISは結果の要求を処理しません。 –