如何关闭从方法调用返回的HttpWebResponse

时间:2014-02-12 19:12:20

标签: c# httprequest httpresponse idisposable using

我有一个帮助器类,其方法设置为接收信息以生成HttpWebRequest。目前的方法是返回HttpWebResponse

HttpWebResponse httpResponse;
//make request here
httpResponse = (HttpWebResponse)httpReq.GetResponse();
return httpResponse;

现在这会导致问题,因为连接永远不会被关闭。在被调用者中使用using语句或close将在返回之前销毁该对象。正确的方法就是这样。

using (httpResp = (HttpWebResponse)httpReq.GetResponse())
{
    return GetDataFromResponse(httpResp);
}

但不幸的是,有很多调用helper类的调用,它们期待响应对象返回,然后以调用者自己的方式序列化数据。

我尝试在调用帮助程序时执行此操作。

using(HttpWebResponse httpResponseRecieved = WebHelper.MakeRequest(parameters))

但这似乎没有关闭响应。 httpResponseRecieved是否与返回的对象不同?有没有更好的解决方案,还是我必须重写方法及其所有来电者?

1 个答案:

答案 0 :(得分:0)

正如@JohnSaunders所指出的那样,调用者周围的最后一个using正在关闭响应。

毕竟,using(HttpWebResponse httpResponseRecieved = WebHelper.MakeRequest(parameters))正在发挥作用。