如何在BCL的HttpClient上设置最大连接数?

时间:2014-01-07 18:28:55

标签: c# windows-runtime windows-8.1 dotnet-httpclient base-class-library

我正在使用BCL版本的HttpClient(可用here)在便携式类库中使用。

有没有办法设置HttpClient实例使用的最大连接数限制?

我使用HttpClient而不是HttpWebRequest的原因之一是因为在我的情况下,HttpWebRequest的连接限制为2太低,并且在特意长时间运行的请求的情况下导致问题。通过每个请求使用一个HttpClient实例,我已经解决了这个限制,但现在似乎导致了相反的问题,因为当一次有大量请求时服务器被淹没并导致异常被抛出HttpClient的。 所以理想的解决方案是能够设置HttpClient使用的连接数,使其高于2,但小于无限,可能接近5。

2 个答案:

答案 0 :(得分:1)

HttpClient在封面下使用HttpWebRequest,因此您以相同的方式设置连接限制。

    ServicePointManager.DefaultConnectionLimit = 10;

奇怪的是,即使此值的默认值为2,如果未明确设置,也会忽略默认值,这就是您看到无限量连接的原因。

答案 1 :(得分:1)

如果您使用自适应/启蒙模式来创建HttpClient实例,则可以执行此操作。

在.NET工厂中,您将使用ServicePointManager。对于WinRT,您可以使用我的WinRtHttpClientHander:

https://github.com/onovotny/WinRtHttpClientHandler

它允许您访问HttpBaseProtocolFilter实例,您可以在其中设置MaxConnectionsPerServer属性: http://msdn.microsoft.com/en-us/library/windows/apps/windows.web.http.filters.httpbaseprotocolfilter.maxconnectionsperserver.aspx