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)