同時に処理できる非同期リクエストの数をテストするために、Web アプリケーションにリクエストを送信するサンプル コンソール アプリケーションを作成しました。
static void Main(string[] args)
{
const string url = "http://localhost/cip/AsyncPage.aspx";
ThreadStart del = delegate
{
Console.WriteLine("Starting request");
WebRequest request = WebRequest.Create(url);
request.GetResponse();
Console.WriteLine("Response ready");
};
for (int i = 0; i < 50; i++)
{
new Thread(del).Start();
}
Console.ReadLine();
}
AsyncPage.aspx は Async="true" ページであり、1 から 10 までループするタスクが含まれています。各反復は 1 秒間スリープし、応答のダミー データに書き込みます (したがって、1 つの要求に 10 秒かかります)。
応答が 10 のバッチで返されることに気付いたこと。つまり、10 秒後に 10 の応答を取得し、次の 10 秒後に次の 10 の応答を取得します。Fiddler で同様のテストを行ったところ、結果は同じでした - 10 個のリクエストがすべてを使用しているようです .... ASP.NET リソース?
どの ASP.NET 設定がこの動作の原因なのだろうか。