Visual Studio デバッガーから MVC4 Web サイトを実行するときに問題が発生します。開いているページが多すぎると、ajax 要求の送信が開始されるまでに非常に長い時間がかかります。非常に奇妙なことは、ページの 1 つを閉じると、リクエストがすぐに開始されることです。
詳細... フレームワーク: MVC 4 IDE: Visual Studio 2010 ブラウザ: IE 9/Chrome
コントローラ:
[Authorize]
[SessionState(SessionStateBehavior.Disabled)]
public class AnalyticsController
: Controller
{
public ActionResult SaveWorkspace( Workspace model)
{
var returnVal = _save(model);
return Json(new { actionResult = returnVal, messages = new string[] {} } );
}
}
AsyncController と Controller からの継承の両方でこれを試しましたが、同じ結果が得られました。
クライアント:
$.ajax({
url: '/Analytics/SaveWorkspace',
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(workspace),
success: function (result) {
alert("Function Executed");
}
});
上記は私が使用するajax呼び出しです。私がしていることは、新しいウィンドウを開く私の Web ページのさまざまなリンクをクリックすることです。私のテストでは、デバッガーから最初のブラウザーを開き、メイン ページから 5 つの他のブラウザーを生成しました。上記の呼び出しは、デバッガーによって開始されたウィンドウからすぐに実行されますが、ネットワーク キャプチャからの要求を表示すると、最終的にタイムアウトするまで「保留中」と表示されたままになります。
ここで興味深いのは、生成したウィンドウのいずれかを閉じると、リクエストが保留中から変更され、コントローラーに送られ、期待どおりに返されることです。もう少し遊んで、(追加のブラウザーを開かずに) もう一度試してみると、常にすぐにサーバーに送信されますが、5 番目のブラウザーを開くと、再び遅くなります。特定のウィンドウで何も問題がないことを確認するためにさまざまなテストを行いました.5つのブラウザの魔法の数が私のリクエストを送信しないようです.
これは、5 番目のブラウザー ウィンドウを閉じたときの成功した要求のスクリーンショットです。
ここに私のリクエストヘッダーのキャプチャがあります
ここに私の応答ヘッダーのキャプチャがあります
ここに私のタイミングのキャプチャがあります
私が本当に理解できない主なことは、なぜ 46 秒の待機期間があり、その後 2 つの開始期間があるのかということです。1回目の起動期間が長かったようで、2回目の起動は5回目のブラウザウィンドウを閉じたときでした。
何が起こっているのかを診断するのに役立つデータとともに、可能な限り詳細を提供しようとしました. より良い絵を描くために他にできることがあれば、お気軽にコメントを投稿してください。どんな提案でも大歓迎です。
皆さん、ありがとうございました!