HttpClientBuilderExtensions.AddAsKeyed Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- builder
- IHttpClientBuilder
- 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)).