Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

adding a handler to all clients created via IHttpClientFactory?

Is there a way to add a handler to all clients created by the IHttpClientFactory? I know you can do the following on named clients:

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

But I don't want to use named clients I just want to add a handler to all clients that are given back to me via:

clientFactory.CreateClient();
like image 763
Hawkzey Avatar asked Jul 27 '19 19:07

Hawkzey


1 Answers

When you use CreateClient with no parameters, you implicitly request a named client, where the name is Options.DefaultName (string.Empty). To affect this default instance, specify Options.DefaultName when calling AddHttpClient:

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

Tobias J notes in the comments that the API docs for AddHttpClient states the following:

Use DefaultName as the name to configure the default client.

like image 125
Kirk Larkin Avatar answered Nov 05 '22 05:11

Kirk Larkin