【问题标题】:Set the MaxConnectionsPerServer when using HttpClientFactory使用 HttpClientFactory 时设置 MaxConnectionsPerServer
【发布时间】:2020-07-29 13:59:48
【问题描述】:

在实例化HttpClient 时,我可以指定...

var socketsHandler = new SocketsHttpHandler
{
    PooledConnectionLifetime = TimeSpan.FromMinutes(10),
    PooledConnectionIdleTimeout = TimeSpan.FromMinutes(5),
    MaxConnectionsPerServer = 10
};

var client = new HttpClient(socketsHandler);

我正在使用的代码使用HttpClientFactory 来实例化一个新的HttpClient。有没有办法做类似的事情,所以我可以在使用HttpClientFactory 的同时限制MaxConnectionsPerServer

【问题讨论】:

  • 你有什么发现吗?我有同样的问题!
  • 我想我发现你不能使用 HttpClientFactory 做同样的事情。我认为一个是 .NET Core 功能,另一个是 .NET Standard 功能。
  • 它也可用于 .NET Framework 4.7.1、4.7.2 和 4.8,默认最多 2 个连接

标签: c# .net-core dotnet-httpclient


【解决方案1】:

您可以尝试以下操作:

var handler = new SocketsHttpHandler
{
    MaxConnectionsPerServer = 100,
    //PooledConnectionLifetime = TimeSpan.FromMinutes(15),  //This is infinite by default
    PooledConnectionIdleTimeout = TimeSpan.FromMinutes(15),
};

self.AddHttpClient<TInterface, TClass>()
    .ConfigureHttpClient((provider, client) =>
    {
        client.BaseAddress = new Uri("base api address");
        client.Timeout = TimeSpan.FromSeconds(15);
    }
    ).ConfigurePrimaryHttpMessageHandler(() => handler);

【讨论】:

    猜你喜欢
    • 2021-03-20
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多