首页 > 解决方案 > 使用 HttpClientFactory 时设置 MaxConnectionsPerServer

问题描述

实例化 aHttpClient时,我可以指定...

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

var client = new HttpClient(socketsHandler);

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

标签: c#.net-coredotnet-httpclient

解决方案


您可以尝试以下操作:

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);

推荐阅读