向通过IHttpClientFactory创建的所有客户端添加处理程序?

时间:2019-07-27 19:24:50

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

是否可以向IHttpClientFactory创建的所有客户端添加处理程序?我知道您可以在指定的客户端上执行以下操作:

services.AddHttpClient("named", c =>
{
    c.BaseAddress = new Uri("TODO");
    c.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    c.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue
    {
        NoCache = true,
        NoStore = true,
        MaxAge = new TimeSpan(0),
        MustRevalidate = true
    };
}).ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
    AllowAutoRedirect = false,
    AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip
});

但是我不想使用命名客户端,我只想向通过以下方式返回给我的所有客户端添加处理程序:

clientFactory.CreateClient();

1 个答案:

答案 0 :(得分:2)

在不使用任何参数的情况下使用CreateClient时,您implicitly请求一个命名客户端,其名称为Options.DefaultNamestring.Empty)。要影响此默认实例,请在调用Options.DefaultName时指定AddHttpClient

services.AddHttpClient(Options.DefaultName, c =>
{
    // ...
}).ConfigurePrimaryHttpMessageHandler(() =>
{
    // ...
});