HttpClientBuilderExtensions.AddAsKeyed Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Registriert eine benannte HttpClient und die zugehörige Handlerpipeline HttpMessageHandler als Schlüsseldienste mit dem Namen des Clients als Schlüssel und eine Lebensdauer, die lifetime im Parameter bereitgestellt wird.
Standardmäßig lautet Scopeddie Lebensdauer .
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
Parameter
- builder
- IHttpClientBuilder
Die IHttpClientBuilder.
- lifetime
- ServiceLifetime
Lebensdauer der registrierten Schlüsseldienste.
Gibt zurück
Ein IHttpClientBuilder Steuerelement, das zum Konfigurieren des Clients verwendet werden kann.
Hinweise
Ein benannter Client, der von DI als Schlüsseldienst aufgelöst wurde, verhält sich ähnlich wie ein Client, mit CreateClient(String)dem Sie erstellen würden. Dies bedeutet, dass der Client weiterhin dieselbe HttpMessageHandler Instanz für die Dauer HandlerLifetimewiederverwendet, und er verwendet weiterhin den separaten DI-Bereich des Handlers anstelle des Bereichs, aus dem er aufgelöst wurde.
WARNUNG: Das Registrieren des Clients als Schlüsseldienst Transient führt zu den HttpClient von HttpMessageHandler DI erfassten Instanzen, die beide implementieren IDisposable. Dies kann zu Speicherlecks führen, wenn der Client mehrmals innerhalb eines Singleton Diensts aufgelöst wird.
WARNUNG: Bei (1) einer Registrierung mit Schlüssel SingletonHttpClient oder (2) einemHttpClientTransientin einen Singleton Dienst oder (3) lang ausgeführten Anwendungsbereichen werden die HttpClient Instanzen von einem Singleton oder einem long-running-Bereich erfasst, sodass sie nicht an der Handlerdrehung teilnehmen können, was zu einem Verlust von DNS-Änderungen führen kann. (Dies ist ein ähnliches Problem mit typierten Clients, die als Transient Dienste registriert sind.)
Wird zweimal mit einem Generator mit demselben Namen aufgerufen, wird die Lebensdauer des schlüsselierten Diensts auf den neuesten verwendeten ServiceLifetime Wert aktualisiert.
Wenn für einen typierten Client aufgerufen wird, wird nur der zugehörige benannte Client und Handler als Schlüssel registriert. Der eingegebene Client selbst wird weiterhin als vorübergehender Dienst registriert.
Bei Verwendung in Verbindung mit ConfigureHttpClientDefaults(IServiceCollection, Action<IHttpClientBuilder>)dem Schlüssel wird der Schlüssel AnyKey verwendet, sodass jede benannte HttpClient Instanz als schlüsselbasierter Dienst aufgelöst werden kann (es sei denn, die Schlüsselregistrierung wurde explizit von RemoveAsKeyed(IHttpClientBuilder)der registrierung mit Schlüsseln deaktiviert).