HttpClientBuilderExtensions.AddAsKeyed Metod

Definition

Registrerar en namngiven HttpClient och relaterad hanteringspipeline HttpMessageHandler som nyckeltjänster med klientens namn som nyckel och en livslängd som anges i parametern lifetime . Som standard är Scopedlivslängden .

public static Microsoft.Extensions.DependencyInjection.IHttpClientBuilder AddAsKeyed(this Microsoft.Extensions.DependencyInjection.IHttpClientBuilder builder, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped);
static member AddAsKeyed : Microsoft.Extensions.DependencyInjection.IHttpClientBuilder * Microsoft.Extensions.DependencyInjection.ServiceLifetime -> Microsoft.Extensions.DependencyInjection.IHttpClientBuilder
<Extension()>
Public Function AddAsKeyed (builder As IHttpClientBuilder, Optional lifetime As ServiceLifetime = Microsoft.Extensions.DependencyInjection.ServiceLifetime.Scoped) As IHttpClientBuilder

Parametrar

lifetime
ServiceLifetime

Livslängden för de registrerade nyckeltjänsterna.

Returer

En IHttpClientBuilder som kan användas för att konfigurera klienten.

Kommentarer

En namngiven klient som matchas från DI som en nyckeltjänst fungerar på samma sätt som en klient som du skapar med CreateClient(String). Det innebär att klienten fortsätter att återanvända samma HttpMessageHandler instans under varaktigheten av HandlerLifetime, och att den fortsätter att använda det separata DI-omfånget för hanteraren i stället för det omfång som den löstes från.

VARNING! Registrering av klienten som en nyckeltjänst Transient leder till att HttpClient instanserna och HttpMessageHandler registreras av DI som båda implementerar IDisposable. Detta kan leda till minnesläckor om klienten löses flera gånger inom en Singleton tjänst.

VARNING! Om (1) en nyckelbaserad SingletonHttpClient registrering, eller (2) en nyckelinmatning matasHttpClientTransientin i en Singleton tjänst, eller (3) långvariga programomfattningar, HttpClient fångas instanserna av en singleton eller ett långvarigt omfång, så att de INTE kommer att kunna delta i hanterarrotationen, vilket kan leda till förlust av DNS-ändringar. (Det här är ett liknande problem som det med typade klienter som är registrerade som Transient tjänster.)

Om den anropas två gånger med för en byggare med samma namn uppdateras livslängden för den nyckelade tjänsten till det senast använda ServiceLifetime värdet.

Om det anropas för en typbeskriven klient registreras endast den relaterade namngivna klienten och hanteraren som nyckelade. Själva den inskrivna klienten fortsätter att vara registrerad som en tillfällig tjänst.

Om den används tillsammans med ConfigureHttpClientDefaults(IServiceCollection, Action<IHttpClientBuilder>)används nyckeln AnyKey , så alla namngivna HttpClient instanser kan matchas som en nyckelbaserad tjänst (såvida du inte uttryckligen har valt bort den nyckelbaserade registreringen via RemoveAsKeyed(IHttpClientBuilder)).

Gäller för