我有一个 .NET 控制台应用程序,可以批量上传到 RESTful 服务。我正在使用HttpClient
与服务进行通信。默认情况下,HttpClient
使用 aHttpWebRequest
进行连接。我一次只建立一个连接。当我达到接近 4000 个请求时,它们开始失败,给出一个错误解释 -
..系统缺少足够的缓冲区空间或因为队列已满。
我相信这是由于 XP 在我发出 4000 个请求之前耗尽了临时端口。
在运行应用程序时查看 netstat,我可以看到大约 300 个与服务的连接为“已建立”。我一次只建立一个连接。连接显然最终会被关闭,但我应该做些什么来确保这些连接尽快关闭吗?
查看活动连接,我可以看到每个请求都使用了新的临时端口。为避免该错误,有没有办法HttpClient.PostAsync()
重用相同的临时端口?我提出这么多请求的正确方法是什么?
我一次只建立 1 个连接时使用的原因HttpClient.PostAsync()
是我打算将其增加到 2 或 3。我在解决这个问题时将它降低到 1。
编辑:我已经能够通过增加 Windows 注册表中的临时端口范围来解决这个问题,但是我更愿意找到一个基于代码的解决方案,因为将来请求的数量可能会急剧增加。