HttpClientBuilderExtensions.AddAsKeyed Método

Definición

Registra una canalización HttpClient de controlador con nombre HttpMessageHandler y relacionada como servicios con claves con el nombre del cliente como clave y una duración proporcionada en el lifetime parámetro . De forma predeterminada, la duración es 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

Duración de los servicios con clave registrados.

Devoluciones

IHttpClientBuilder que se puede usar para configurar el cliente.

Comentarios

Un cliente con nombre resuelto desde la inserción de dependencias como un servicio con claves se comportará de forma similar a un cliente que crearía con CreateClient(String). Esto significa que el cliente seguirá reutilizando la misma HttpMessageHandler instancia durante la duración de HandlerLifetimey seguirá usando el ámbito de inserción de dependencias independiente del controlador en lugar del ámbito del que se resolvió.

ADVERTENCIA: El registro del cliente como un servicio con Transient claves provocará que HttpClient la inserción de dependencias y HttpMessageHandler capture las instancias como ambas implementan IDisposable. Esto puede provocar pérdidas de memoria si el cliente se resuelve varias veces dentro de un Singleton servicio.

ADVERTENCIA: En el caso de (1) un registro con SingletonHttpClient clave o (2) insertado TransientHttpClient en un Singleton servicio o (3) ámbitos de aplicación de larga duración, las HttpClient instancias se capturarán mediante un singleton o un ámbito de larga duración, por lo que NO podrán participar en la rotación del controlador, lo que puede provocar la pérdida de cambios de DNS. (Se trata de un problema similar al que tiene clientes con tipo, que están registrados como Transient servicios).

Si se llama dos veces con para un generador con el mismo nombre, la duración del servicio con claves se actualizará al valor usado ServiceLifetime más reciente.

Si se llama a para un cliente con tipo, solo el cliente y el controlador con nombre relacionados se registrarán como con clave. El propio cliente con tipo se seguirá registrando como un servicio transitorio.

Si se usa junto con ConfigureHttpClientDefaults(IServiceCollection, Action<IHttpClientBuilder>), se usa la clave AnyKey , por lo que cualquier instancia con nombre HttpClient se podrá resolver como un servicio con claves (a menos que se opte explícitamente por el registro con clave a través RemoveAsKeyed(IHttpClientBuilder)de ).

Se aplica a