我正在将一个控制台应用程序(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分开)专门用来做这个吗?
感谢。
答案 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