注入的 HttpClient 缺少基地址
Injected HttpClient Missing Base Address
我正在尝试将带有预配置 BaseAddress
的简单 HttpClient
注入 class.
private static void ConfigureServices(HostBuilderContext hbc, IServiceCollection services)
{
services.AddTransient<IAuthenticationExchangeClient, AuthenticationExchangeClient>(); //Nb. This wasn't shown originally, added for context after solving question. This line is the problem.
services.AddHttpClient<AuthenticationExchangeClient>(c => c.BaseAddress = new("http://api.mendeley.com"));
}
public class AuthenticationExchangeClient : IAuthenticationExchangeClient
{
private readonly HttpClient _client;
public AuthenticationExchangeClient(HttpClient client)
{
_client = client;
}
}
据我所知,这符合 dotnet 5 文档。
当我 运行 它时,HttpClient
被注入 到 AuthenticationExchangeClient
但是 client.BassAddress
在这个注入的客户端上是null
.
我在这里错过了什么?
所以问题是我将 AuthorisationExchangeClient
注册为临时服务,就像这样:
services.AddTransient<IAuthenticationExchangeClient, AuthenticationExchangeClient>();
当我去掉那一行,并将我的 HttpClient
行改成这个时,它起作用了:
services.AddHttpClient<IAuthenticationExchangeClient, AuthenticationExchangeClient>(c => c.BaseAddress = new("http://api.mendeley.com"));
似乎 AddHttpClient
执行双重任务,同时注册 HttpClient
和服务。
我正在尝试将带有预配置 BaseAddress
的简单 HttpClient
注入 class.
private static void ConfigureServices(HostBuilderContext hbc, IServiceCollection services)
{
services.AddTransient<IAuthenticationExchangeClient, AuthenticationExchangeClient>(); //Nb. This wasn't shown originally, added for context after solving question. This line is the problem.
services.AddHttpClient<AuthenticationExchangeClient>(c => c.BaseAddress = new("http://api.mendeley.com"));
}
public class AuthenticationExchangeClient : IAuthenticationExchangeClient
{
private readonly HttpClient _client;
public AuthenticationExchangeClient(HttpClient client)
{
_client = client;
}
}
据我所知,这符合 dotnet 5 文档。
当我 运行 它时,HttpClient
被注入 到 AuthenticationExchangeClient
但是 client.BassAddress
在这个注入的客户端上是null
.
我在这里错过了什么?
所以问题是我将 AuthorisationExchangeClient
注册为临时服务,就像这样:
services.AddTransient<IAuthenticationExchangeClient, AuthenticationExchangeClient>();
当我去掉那一行,并将我的 HttpClient
行改成这个时,它起作用了:
services.AddHttpClient<IAuthenticationExchangeClient, AuthenticationExchangeClient>(c => c.BaseAddress = new("http://api.mendeley.com"));
似乎 AddHttpClient
执行双重任务,同时注册 HttpClient
和服务。