当我提前关闭HttpWebResponse时,Streamreader不起作用

sun*_*nil 1 c# httpwebresponse streamreader

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();
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码工作正常,但以下代码没有?请注意,我在以下代码中提前关闭响应.

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();
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

关闭响应也会关闭响应流...所以StreamReader不再需要读取任何内容.

从以下文档WebResponse.Close:

Close方法清除WebResponse使用的资源,并通过调用Stream.Close方法关闭基础流.