1

GenericHandler.ashx に次のメソッドがあります。

private void T1()
{
    System.Threading.Thread.Sleep(2000);
    Ctx.Response.Write(Serializer.Serialize(new { foo = "bar" }));
}

$.ajaxハンドラーを同時に2 回呼び出した場合、最初の応答は 2 秒後に取得され、次の応答は 4 秒後に取得されます。

GenericHandler.ashx で両方の ajax 呼び出しを同時に処理する方法はありますか?

4

3 に答える 3

2

必要と思われるのは、非同期 HTTP ハンドラーです

非同期 HTTP ハンドラーの処理中、ASP.NET は、ハンドラーが外部プロセスからコールバックを受信するまで、通常は外部プロセスに使用されるスレッドをスレッド プールに戻します。これにより、同時に実行できるスレッドの数が制限されるため、スレッドのブロックを防ぎ、パフォーマンスを向上させることができます。多くのユーザーが外部プロセスに依存する同期 HTTP ハンドラーを要求すると、多くのスレッドがブロックされて外部プロセスを待機するため、オペレーティング システムはすぐにスレッドを使い果たす可能性があります。

現在のメソッドの本体StartAsyncTaskは、提供された例のメソッド本体に配置されます

于 2013-09-02T13:18:52.193 に答える
0

$.ajax のパラメーターが表示されない場合は、async を true に設定する必要があると思います。

$.ajax({
   url: "page.ashx",
   async: true
});

また、一度に許可するリクエストの数に応じて、ブラウザによって反応が異なることに注意してください。

async をチェックしてください

于 2013-09-02T13:17:17.907 に答える
0

セッション中に一度 jquery.unobtrusive-ajax をロードする必要があります。すでにロードされているかどうかを確認します。

if (Request.Headers["X-Requested-With"] != "XMLHttpRequest")
{
    Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js");
}
于 2013-09-02T13:16:36.867 に答える