WebRequest.GetResponse()何时将Connection设置为“”;保持活力";c#

本文关键字:quot GetResponse 何时 设置 Connection WebRequest | 更新日期: 2023-09-27 17:59:17

我有以下函数

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",有时不设置。它取决于什么?

WebRequest.GetResponse()何时将Connection设置为“”;保持活力";c#

我不知道是什么控制了这个头是否应该发送,但根据文档:

使用HTTP/1.1时,"保持活动"处于启用状态默认情况下。将KeepAlive设置为false可能导致发送连接:关闭服务器的标头。

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