HttpClientBuilderExtensions.AddAsKeyed Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Regista um pipeline HttpMessageHandler handler nomeado HttpClient e o handler relacionado como serviços com chave, com o nome do cliente como chave, e uma vida útil fornecida no lifetime parâmetro.
Por defeito, a vida útil é 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
- builder
- IHttpClientBuilder
- lifetime
- ServiceLifetime
A vida útil dos serviços com chave registados.
Devoluções
Um IHttpClientBuilder que pode ser usado para configurar o cliente.
Observações
Um cliente nomeado resolvido a partir de DI como um serviço com chave comportar-se-á de forma semelhante a um cliente que criaria com CreateClient(String). Isto significa que o cliente continuará a reutilizar a mesma HttpMessageHandler instância durante a duração de HandlerLifetime, e continuará a usar o âmbito DI do handler separado em vez do âmbito de onde foi resolvido.
AVISO: Registar o cliente como um serviço com Transient chave levará a que as HttpClient instâncias e HttpMessageHandler sejam capturadas pelo DI, pois ambas implementam IDisposable. Isto pode levar a fugas de memória se o cliente for resolvido várias vezes dentro de um Singleton serviço.
AVISO: No caso de (1) um registo com SingletonHttpClient chave, ou (2) um escopo TransientHttpClient de chave injetado num Singleton serviço, ou (3) escopos de aplicação de longa duração, as HttpClient instâncias serão capturadas por um escopo singleton ou de longa duração, pelo que NÃO poderão participar na rotação do handler, o que pode resultar na perda de alterações ao DNS. (Este é um problema semelhante ao dos Clientes Tipados, que são registados como Transient serviços.)
Se for chamado duas vezes para um construtor com o mesmo nome, a vida útil do serviço com chave será atualizada para o valor usado ServiceLifetime mais recente.
Se for chamado para um cliente tipado, apenas o cliente nomeado e o handler relacionados serão registados como com chave. O próprio cliente tipado continuará registado como serviço transitório.
Se usada em conjunto com ConfigureHttpClientDefaults(IServiceCollection, Action<IHttpClientBuilder>), a chave AnyKey é usada, pelo que qualquer instância nomeada HttpClient será resolvível como um serviço com chave (a menos que explicitamente desligada do registo com chave via RemoveAsKeyed(IHttpClientBuilder)).