HttpClientBuilderExtensions.AddAsKeyed Método

Definição

Registra um pipeline HttpClient de manipulador nomeado HttpMessageHandler e relacionado como serviços chaveados com o nome do cliente como a chave e um tempo de vida fornecido no lifetime parâmetro. Por padrão, o tempo de vida é Scoped.

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

Parâmetros

lifetime
ServiceLifetime

Tempo de vida dos serviços chaveados registrados.

Retornos

Um IHttpClientBuilder que pode ser usado para configurar o cliente.

Comentários

Um cliente nomeado resolvido de DI como um serviço com chave se comportará de forma semelhante a um cliente com CreateClient(String)o qual você criaria. Isso significa que o cliente continuará reutilizando a mesma HttpMessageHandler instância durante a duração e HandlerLifetimecontinuará a usar o escopo DI do manipulador separado em vez do escopo do qual foi resolvido.

AVISO: registrar o cliente como um serviço com Transient chave levará à captura de HttpClient instâncias por HttpMessageHandler DI como ambas IDisposable. Isso poderá levar a vazamentos de memória se o cliente for resolvido várias vezes dentro de um Singleton serviço.

AVISO: No caso de (1) um registro com SingletonHttpClient chave ou (2) um keyed injetadoHttpClientTransientem um Singleton serviço ou (3) escopos de aplicativo de execução longa, as HttpClient instâncias serão capturadas por um singleton ou um escopo de execução longa, para que não possam participar da rotação do manipulador, o que pode resultar na perda de alterações de DNS. (Esse é um problema semelhante ao de Clientes Tipados, que são registrados como Transient serviços.)

Se chamado duas vezes para um construtor com o mesmo nome, o tempo de vida do serviço com chave será atualizado para o valor usado ServiceLifetime mais recente.

Se for chamado para um cliente tipado, somente o cliente e o manipulador nomeados relacionados serão registrados como chave. O próprio cliente tipado continuará sendo registrado como um serviço transitório.

Se usado em conjunto com ConfigureHttpClientDefaults(IServiceCollection, Action<IHttpClientBuilder>), a chave AnyKey é usada, portanto, qualquer instância nomeada HttpClient será resolvível como um serviço com chave (a menos que explicitamente opte por sair do registro com chave via RemoveAsKeyed(IHttpClientBuilder)).

Aplica-se a