.net 8 AddHttpClient 未按预期工作

问题描述 投票:0回答:1

我正在像这样注册我的 HttpClient:

builder.Services.AddHttpClient<IMyClass, MyClass>(i =>
    {
        i.BaseAddress = new Uri("https://google.com"); //breakpoint here never stops
    });

并且

MyClass
的构造函数的实现类似于

public MyClass(HttpClient client)
{
    // client.BaseAddress is null here
}

我做错了什么?我的期望是具体类上的

client
是预先配置的......

我已经尝试过注册:

  • AddHttpClient("global", i => { i.BaseAddress = new Uri("https://google.com"); }
  • AddHttpClient<MyClass>(i => { i.BaseAddress = new Uri("https://google.com"); }
  • AddHttpClient<IMyClass>(i => { i.BaseAddress = new Uri("https://google.com"); }
c# .net dependency-injection
1个回答
0
投票

我在编写单元测试时遇到了同样的问题,原因是 .NET 8 引入的内部服务注册。请参见此处:DefaultHttpClientBuilder - dotnet/runtime

他们正在尝试使用 LINQ

.Single()
方法解析该跟踪器类,因为他们不希望注册的类不存在。

我目前已禁用该特定单元测试,但很抱歉,这根本无法解决您的问题,因为它们破坏了它(.NET 7 和更早版本没有此问题。)

© www.soinside.com 2019 - 2024. All rights reserved.