C# 如何在BCL';什么是HttpClient?

C# 如何在BCL';什么是HttpClient?,c#,windows-runtime,windows-8.1,dotnet-httpclient,base-class-library,C#,Windows Runtime,Windows 8.1,Dotnet Httpclient,Base Class Library,我正在使用HttpClient(可用)的BCL版本,以便在可移植类库中使用 有没有办法设置HttpClient实例使用的最大连接数限制 我使用HttpClient而不是HttpWebRequest的原因之一是,在我的情况下,HttpWebRequest的连接限制2太低,在故意长时间运行请求的情况下会导致问题。通过对每个请求使用一个HttpClient实例,我绕过了这个限制,但现在似乎导致了相反的问题,即当一次有很多请求时,服务器被淹没,导致HttpClient抛出异常。 因此,理想的解决方案是能

我正在使用HttpClient(可用)的BCL版本,以便在可移植类库中使用

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

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

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

    ServicePointManager.DefaultConnectionLimit = 10;

奇怪的是,即使这个值有一个默认值2,如果你没有显式地设置它,默认值会被忽略,这就是为什么你会看到无限数量的连接。

如果你使用一个自适应/启发模式来创建你的HttpClient实例,你可以做到

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

它将允许您访问HttpBaseProtocolFilter实例,您可以在其中设置MaxConnectionsPerServer属性:

根据我的经验,至少在Windows 8中,httpclient对每个域的请求限制为5-6个。ServicePointManager位于哪里?它似乎没有在我的PCL项目或WinRT项目中公开。@grimus-hmm,废话。你是对的,我不认为这个类在PCL库中是可以访问的。它是隐藏的。