2011-06-14 47 views
0

我有以下功能什麼時候WebRequest.GetResponse()設置連接到「保持活躍」 C#

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

我不知道該怎麼控制這個標題是否要發送或沒有,但根據documentation

當使用HTTP/1.1,保持活動是 默認。將KeepAlive設置爲false 可能會導致發送連接: 關閉標頭到服務器。

所以,如果您使用的是HTTP/1.1,頭文件是否被髮送並不重要。如果沒有Connection: close頭部,服務器應該假定持久連接。