什么时候WebRequest.GetResponse()将Connection设置为“Keep-Alive”c#

时间:2011-06-14 09:56:52

标签: c# http httpwebrequest

我有以下功能

private byte[] Function(string url)
{
    HttpWebRequest webRequest= (HttpWebRequest)WebRequest.Create(url);
    webRequest.AddRange(0, 200);
    webRequest.Method = "GET";
    webRequest.KeepAlive = true;

    byte[] buffer = new byte[200];
    using (var webResponse =  webRequest.GetResponse())
    using (Stream webResponseStreem = webResponse.GetResponseStream())
    {
        webResponseStreem.Read(buffer, 0, 200);
    }

    return buffer;
}

我从我的应用程序的不同部分调用它。有时我得到的结果不是我所期望的。我注意到,有时调用webRequest.GetResponse()会将webRequest.Connection设置为"Keep-Alive",有时则不会。它取决于什么?

1 个答案:

答案 0 :(得分:1)

我不知道是什么控制是否应该发送此标头,但根据documentation

  

使用HTTP / 1.1时,Keep-Alive处于打开状态   默认情况下。将KeepAlive设置为false   可能导致发送连接:   关闭服务器的标头。

因此,如果您使用的是HTTP / 1.1,则无论是否发送标头都无关紧要。如果没有Connection: close标头,则服务器应该采用持久连接。