我有一个帮助器类,其方法设置为接收信息以生成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
是否与返回的对象不同?有没有更好的解决方案,还是我必须重写方法及其所有来电者?
答案 0 :(得分:0)
正如@JohnSaunders所指出的那样,调用者周围的最后一个using
正在关闭响应。
毕竟,using(HttpWebResponse httpResponseRecieved = WebHelper.MakeRequest(parameters))
正在发挥作用。