HttpWebRequests在后续调用时失败

时间:2009-01-20 10:57:46

标签: c# api .net-2.0 httpwebrequest webrequest

我知道这是一个模糊的问题,特别是因为我没有提供任何代码,但我正在开发.Net 2.0应用程序,我们有一个WebRequest,它将数据发布到内部构建的API。

奇怪的事情发生在我们的第3个(并且总是第3个)后续请求中,该请求在请求的GetRequestStream()方法中失败。它第一次和第二次被叫,一切都很好。在第三次,它挂了一点,最终超时。

内部的其他应用程序正在调用API,因此我们知道它不是服务器端或网络问题。我们尝试过几台机器 - 所有机器都有同样的问题。有没有人曾经遇到过这个问题,或者是否有人对如何调试有任何不满(因为响应对象没有任何东西,或者至少没有任何用处)。

2 个答案:

答案 0 :(得分:18)

如果您没有处理WebResponse,通常会发生这种情况。从客户端到同一台计算机的连接数有一个限制,默认情况下是两个。如果关闭WebResponse,则可以重用(或关闭)连接。 using语句是你的朋友:

WebRequest request = [...];
// Do stuff with the request stream here (and dispose it)
using (WebResponse response = request.GetResponse())
{
    // Stuff with the response
}

答案 1 :(得分:1)

是的,你完全正确。答复没有得到妥善处理。我们一直把它留给垃圾收集器,你猜对了,没有及时收集。不幸的是,我关闭了我的浏览器,忘了阅读任何答案(大声笑,你认为我感觉多么愚蠢),问题就解决了。

我今晚学到了两件事。 1,妥善处理您的WebRequests; 2,更加注意堆叠溢出的答案!