HttpClientBuilderExtensions.AddAsKeyed Metoda

Definicja

Rejestruje nazwany HttpClient i powiązany potok HttpMessageHandler obsługi jako usługi kluczy z nazwą klienta jako kluczem i okres istnienia podany w parametrze lifetime . Domyślnie okres istnienia to 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

Parametry

lifetime
ServiceLifetime

Okres istnienia zarejestrowanych usług kluczy.

Zwraca

Element IHttpClientBuilder , który może służyć do konfigurowania klienta.

Uwagi

Nazwany klient rozpoznany z di jako usługa kluczy zachowuje się podobnie do klienta, który należy utworzyć za pomocą CreateClient(String)polecenia . Oznacza to, że klient będzie nadal ponownie używać tego samego HttpMessageHandler wystąpienia przez czas trwania HandlerLifetime, i będzie nadal używać oddzielnego zakresu di programu obsługi zamiast zakresu, z którego został rozwiązany.

OSTRZEŻENIE: Zarejestrowanie klienta jako usługi z kluczem Transient doprowadzi do HttpClient przechwycenia wystąpień i HttpMessageHandler przez DI jako obu implementacji IDisposable. Może to prowadzić do przecieków pamięci, jeśli klient zostanie rozwiązany wiele razy w ramach Singleton usługi.

OSTRZEŻENIE: W przypadku (1) rejestracji klucza SingletonHttpClient lub (2) klucza TransientHttpClient wprowadzonego do Singleton usługi lub (3) długotrwałych zakresów HttpClient aplikacji wystąpienia zostaną przechwycone przez pojedynczy lub długotrwały zakres, więc nie będą mogły uczestniczyć w rotacji programu obsługi, co może spowodować utratę zmian DNS. (Jest to podobny problem do problemu z klientami typowymi, które są zarejestrowane jako Transient usługi).

Jeśli zostanie wywołana dwukrotnie dla konstruktora o tej samej nazwie, okres istnienia usługi kluczy zostanie zaktualizowany do najnowszej używanej ServiceLifetime wartości.

Jeśli zostanie wywołana dla typizowanego klienta, tylko powiązany nazwany klient i program obsługi zostaną zarejestrowane jako klucz. Typowany klient będzie nadal rejestrowany jako usługa przejściowa.

Jeśli jest używany w połączeniu z elementem ConfigureHttpClientDefaults(IServiceCollection, Action<IHttpClientBuilder>), klucz AnyKey jest używany, więc każde nazwane HttpClient wystąpienie będzie rozpoznawalne jako usługa z kluczem (chyba że jawnie zrezygnowano z rejestracji klucza za pośrednictwem usługi RemoveAsKeyed(IHttpClientBuilder)).

Dotyczy