问题
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();
回答1:
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(() =>
{
// ...
});
来源:https://stackoverflow.com/questions/57235400/adding-a-handler-to-all-clients-created-via-ihttpclientfactory