注入的 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 和服务。