如何强制.NET打开许多同时的http连接

时间:2013-06-20 16:20:06

标签: c# .net httpwebrequest webrequest

以下是我想要展示的非常简单的场景:

internal class Program
{
    private static void Main(string[] args)
    {
        var uri = new Uri("http://myserver.com");
        ServicePointManager.FindServicePoint(uri).ConnectionLimit = 1000;
        for (int i = 0; i < 1000; i++)
        {
            WebRequest.Create(uri).BeginGetResponse(a => { }, null);
        }
        Console.WriteLine("done");
        Console.ReadLine();
    }
}

相应的App.config:

<system.net>
  <connectionManagement>
    <clear/>
    <add address="*" maxconnection="1000" />
  </connectionManagement>
  <defaultProxy>
    <proxy proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>

假设myserver.com响应10秒(我通过AutoResponder在Fiddler中进行了仿真)。

在代理服务器(Fiddler)中,我看到在应用程序启动时只发送了14个http请求。然后,活动连接的数量正在增长,但非常慢,在1-2秒内约为+1请求。因此,工作1分钟后,活动的http请求数约为50,但不是1000。

是否有任何配置我可以更改以强制.NET打开,如果不是1000真正的http请求但至少200-300?

1 个答案:

答案 0 :(得分:1)

我认为最好的解决方案是在新线程中打开每个连接。

线程限制是 在.NET 4 32位系统中使用1023 .NET 4 64位系统中的32768

如果它至少不起作用,您将确保代码中没有任何错误。