テスト目的で次のコードがあります
for( int i = 0; i < 5 ; i++ ) {
var url = "http://myserver.com/Warmup";
var request = WebRequest.Create(url);
using (WebResponse response = request.GetResponse()) {
using (var stream = response.GetResponseStream()) {
using (var reader = new StreamReader(stream)) {
reader.ReadToEnd();
}
}
}
}
Connection: Keep-Alive
Fiddler で実行すると、最初のリクエストのみにヘッダーがあることがわかります。
これは、サーバーがしばらく非アクティブになった後にアプリケーション プールをシャットダウンするようにプログラムされている IIS であり、そのプールのシャットダウンが最初の要求の後、次の要求の前に発生する場合、クライアントからの次の要求はConnection: Keep-Alive
設定されていないため、keep-アライブは入りません。
Connection: Keep-Alive
が最初のリクエストでのみ送信され、それ以降のリクエストでは送信されないのはなぜですか?