5

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

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

该 API 被内部的其他应用程序调用,因此我们知道它不是服务器端或网络问题。我们已经在几台机器上进行了尝试——所有这些机器都有同样的问题。以前有没有人遇到过这个问题,或者是否有人对如何调试有任何建议(因为响应对象没有产生任何东西,或者至少没有任何用处)。

4

2 回答 2

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
}
于 2009-01-20T11:00:29.863 回答
1

是的,你完全正确。没有正确处理响应。我们一直把它留给垃圾收集器,你猜对了,它没有被及时收集。不幸的是,我关闭了浏览器,忘记阅读任何答案(哈哈,你觉得我有多愚蠢),问题就解决了。

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

于 2009-01-20T11:46:11.953 回答