HttpWebRequests在后续调用时失败

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

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

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

如果您没有处理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,正确处理您的WebRequests; 2,更加注意堆叠溢出的答案!