HttpWebResponse:关闭流

spe*_*der 3 c# stream httpwebrequest httpwebresponse abort

我从HttpWebRequest(使用修改后的版本Jeff Richter的CCR包装器)获得响应,然后检查一些标头以决定是否继续下载.有时我可能不想继续,所以我因此发出response.Closerequest.Abort.是否有必要发出GetResponseStream然后关闭流,或者当调用response.Close时这是隐式的吗?

发出GetResponse后,文档说明:

您必须调用Close方法来关闭流并释放连接.如果不这样做可能会导致您的应用程序用完连接.

那么这是否意味着一旦我们得到响应,那么获取流并关闭它是必须的吗?

我们看到一些相当奇怪的问题,其中挂起的下载最终会淹没系统.这似乎是资源泄漏的最强候选者,但想知道是否有其他人有这个问题的经验.

顺便说一句:GetResponseStream是否安全,假设它是同一个流?

Ric*_*lay 6

调用HttpWebResponse.Close implicity会关闭响应流.

从文档:

Close方法关闭响应流并释放与资源的连接以供其他请求重用

您必须调用Stream.Close或HttpWebResponse.Close方法来关闭流并释放连接以便重用.没有必要同时调用Stream.Close和HttpWebResponse.Close,但这样做不会导致错误.无法关闭流可能会导致应用程序用完连接.

对于你的双GetResponseStream问题,尽管文档没有明确提及它,但无论你调用它多少次,它总是会返回相同的流对象.