.NET核心配置 - System.Net connectionManagement / maxconnections?

时间:2017-10-04 18:53:15

标签: configuration migration .net-core system.net

我正在将一个控制台应用程序(REST客户端应用程序)从.NET框架迁移到.NET Core。

在我当前的(框架)版本中,我使用app.config文件来设置System.Net配置:

<system.net>
    <connectionManagement>
      <add address="*" maxconnection="65535"/>
    </connectionManagement>
</system.net>

在.NET Core中,我必须使用JSON文件进行配置。没有使用新配置架构实现这些设置的文档。有没有人知道这可能在新的JSON配置中看起来如何,或者在Core中实现这一点的正确方法?我是否需要建立一个指定的&#34; System.Net.json&#34;配置文件(与AppSettings.json分开)专门用来做这个吗?

感谢。

3 个答案:

答案 0 :(得分:3)

我假设您正在尝试避免每个端点限制2个连接,这在.NET Framework上是默认的。 .NET Core 上不存在此类限制。因此,您根本不需要上述设置。

请注意,为了获得更好的性能,我们建议在.NET Core上使用HttpClient / HttpClientHandler而不是HttpWebRequest / ServicePoint。 HttpWebRequest / ServicePoint API为compat-only

如果要限制HttpClient连接,请使用HttpClientHandler.MaxConnectionsPerServer

答案 1 :(得分:1)

假设您使用Kestrel作为您的Web服务器(而不是通过IIS实现),您应该能够在BuildWebHost中的UseKestrel中设置它。

它会是这样的:

.UseKestrel(options =>
{
    options.Limits.MaxConcurrentConnections = 100;
})

您也可以在HttpClientHandler中添加它,它叫做MaxConnectionsPerServer。可以看到here

答案 2 :(得分:0)

除了Karel Zikmund的答案。 (由于我无权发表评论)。

由于.net core 2.0,因此此文档连接受到限制: here

文档中缺少的是如果ServicePointManager用于.net核心HttpClient实现。根据此信息,它在.net核心中使用,但对于HttpWebRequest而不是HttpClient:https://docs.microsoft.com/en-us/dotnet/api/system.net.servicepointmanager.defaultconnectionlimit?view=netcore-3.1