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

Параметры

builder
IHttpClientBuilder

Объект IHttpClientBuilder.

lifetime
ServiceLifetime

Время существования зарегистрированных ключевых служб.

Возвращаемое значение

Можно IHttpClientBuilder использовать для настройки клиента.

Комментарии

Именованный клиент, разрешенный из DI в качестве ключевой службы, будет вести себя так же, как и с клиентом, с CreateClient(String)которым вы создадите. Это означает, что клиент будет продолжать повторно использовать тот же HttpMessageHandler экземпляр в течение длительности HandlerLifetime, и он будет продолжать использовать отдельную область di обработчика вместо области, из которую она была разрешена.

ПРЕДУПРЕЖДЕНИЕ. Регистрация клиента в качестве ключевой Transient службы приведет к HttpClientHttpMessageHandler захвату экземпляров, захваченных di как реализуемой IDisposable. Это может привести к утечкам памяти, если клиент разрешается несколько раз в Singleton службе.

ПРЕДУПРЕЖДЕНИЕ. В случае (1) регистрации ключа или (2) ключа, внедренного SingletonHttpClient в Singleton службу или (3) TransientHttpClient длительных областей приложения, экземпляры будут захвачены одним или длительным областью действия, HttpClient поэтому они не смогут участвовать в смене обработчика, что может привести к потере изменений DNS. (Это аналогичная проблема с типизированными клиентами, зарегистрированными в качестве Transient служб.)

Если вызывается дважды для построителя с одинаковым именем, время существования ключевой службы будет обновлено до последнего используемого ServiceLifetime значения.

При вызове для типизированного клиента будет зарегистрирован только связанный именованный клиент и обработчик. Сам типизированный клиент будет по-прежнему зарегистрирован в качестве временной службы.

При использовании в сочетании с ConfigureHttpClientDefaults(IServiceCollection, Action<IHttpClientBuilder>)ключом используется ключAnyKey, поэтому любой именованный HttpClient экземпляр будет разрешаться в качестве ключевой службы (если явно не отказано от регистрации с ключом).RemoveAsKeyed(IHttpClientBuilder)

Применяется к