HttpClientBuilderExtensions.AddAsKeyed メソッド

定義

名前付き HttpClient と関連するハンドラー パイプライン HttpMessageHandler キーサービスとして、クライアントの名前をキーとして登録し、 lifetime パラメーターに指定された有効期間を指定します。 既定では、有効期間は 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

パラメーター

lifetime
ServiceLifetime

登録されたキー付きサービスの有効期間。

返品

クライアントの構成に使用できる IHttpClientBuilder

注釈

DI からキー付きサービスとして解決された名前付きクライアントは、 CreateClient(String)で作成するクライアントと同様に動作します。 つまり、クライアントはHandlerLifetimeの間、同じHttpMessageHandler インスタンスを再利用し続け、解決されたスコープではなく、個別のハンドラーの DI スコープを引き続き使用します。

警告: クライアントをキー付きTransient サービスとして登録すると、両方のIDisposableが実装されるため、HttpClientインスタンスとHttpMessageHandlerインスタンスが DI によってキャプチャされます。 Singleton サービス内でクライアントが複数回解決されると、メモリ リークが発生する可能性があります。

警告: (1) キー付きSingletonHttpClient登録、または (2) Singleton サービスに挿入されたキー付きTransientHttpClient、または (3) 実行時間の長いアプリケーション スコープの場合、HttpClient インスタンスはシングルトンまたは実行時間の長いスコープによってキャプチャされるため、ハンドラーローテーションに参加できないため、DNS 変更が失われる可能性があります。 (これは、 Transient サービスとして登録されている型指定されたクライアントと同様の問題です)。

同じ名前のビルダーに対して 2 回呼び出された場合、キー付きサービスの有効期間は、使用されている最新の ServiceLifetime 値に更新されます。

型指定されたクライアントに対して呼び出された場合、関連する名前付きクライアントとハンドラーのみがキー付きとして登録されます。 型指定されたクライアント自体は、引き続き一時的なサービスとして登録されます。

ConfigureHttpClientDefaults(IServiceCollection, Action<IHttpClientBuilder>)と組み合わせて使用すると、キー AnyKeyが使用されるため、名前付き HttpClient インスタンスはすべてキー付きサービスとして解決できます (RemoveAsKeyed(IHttpClientBuilder)経由でキー付き登録から明示的にオプトアウトされない限り)。

適用対象