我有以下代码用于测试目的
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();
}
}
}
}
当我用 Fiddler 运行它时,我看到只有第一个请求有Connection: Keep-Alive
标头。
这意味着,如果服务器被 IIS 编程为在一段时间不活动后关闭应用程序池,并且池关闭发生在第一个请求之后但在下一个请求之前,那么来自客户端的下一个请求将不会Connection: Keep-Alive
设置,因此保持 -活着不会踢。
为什么Connection: Keep-Alive
只为第一个请求发送而不为后面的请求发送?