![](/img/trans.png)
[英]Does this HttpWebRequest/HttpWebResponse/StreamReader code even make sense?
[英]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.