簡體   English   中英

當我提前關閉HttpWebResponse時,Streamreader無法正常工作

[英]Streamreader does not work when I close HttpWebResponse early

Uri targetUri = new Uri(targetURL);    
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string data = reader.ReadToEnd();
response.Close();

上面的代碼為什么工作正常,而下面的代碼卻不能正常工作? 注意,我在以下代碼的早期關閉了響應。

Uri targetUri = new Uri(targetURL);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
response.Close();
string data = reader.ReadToEnd();

關閉響應也會關閉響應流...因此, StreamReader不再有任何內容可讀取。

WebResponse.Close的文檔中:

Close方法清除WebResponse使用的資源,並通過調用Stream.Close方法關閉基礎流。

您的閱讀器已使用響應中的流進行了初始化,因此正在使用它。

如果關閉響應流,則閱讀器將不再具有要讀取的正在運行的基礎流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM