использовать сервис с областью действия внутри httpclient - PullRequest
0 голосов
/ 09 марта 2020

Я использую пользовательский сервис Singleton httpClient и сервис UserInfo с областью действия, который содержит данные пользователя, отправившего запрос.

В файле startup.cs

services.AddScpoped<IUserInfo, UserInfo>();
services.AddHttpClient<MicroServiceClient>();

Я хочу добавьте настраиваемый заголовок с данными из службы userInfo в каждый запрос, отправляемый через службу MicroServiceClient. Но я сталкиваюсь с проблемой, потому что я не могу использовать сервис с ограниченным доступом внутри сингелтона.

1 Ответ

0 голосов
/ 09 марта 2020

Вы можете внедрить IServiceProvider в ваш набранный http-клиент и самостоятельно запустить область.

using (var scope = _serviceProvider.CreateScope())
{
    var userInfo = scope.ServiceProvider.GetRequiredService<IUserInfo>();
    // more logic here
}

Имейте в виду, что запуск области в этом случае вручную считается анти-паттерн называется ServiceLocatorPattern. Вы можете прочитать об этом здесь .

...