.net core 在httpclient内使用作用域服务

.net core 在httpclient内使用作用域服务,.net-core,dotnet-httpclient,.net Core,Dotnet Httpclient,我使用一个定制的单例httpClient服务和一个作用域UserInfo服务,其中包含发送请求的用户的数据 在startup.cs中 services.AddScpoped<IUserInfo, UserInfo>(); services.AddHttpClient<MicroServiceClient>(); services.AddScpoped(); services.AddHttpClient(); 我想在通过MicroServiceClient服务发送的每个

我使用一个定制的单例httpClient服务和一个作用域UserInfo服务,其中包含发送请求的用户的数据

在startup.cs中

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

我想在通过MicroServiceClient服务发送的每个请求中添加一个自定义标头,其中包含来自userInfo服务的数据。但我面临一个问题,因为我无法在Singleton中使用作用域服务。

您可以将IServiceProvider注入到您键入的http客户端中,然后自己启动一个作用域

使用(var scope=\u serviceProvider.CreateScope())
{
var userInfo=scope.ServiceProvider.GetRequiredService();
//这里有更多的逻辑
}

请记住,在本例中,手动启动作用域被视为一种称为
ServiceLocatorPattern
的反模式。您可以阅读相关内容。

使用HttpClient仅发送消息,但消息可以在范围服务内的
MicroServiceClient之外创建并传递给singleton客户端。您是否使用ASP.NET Core?