我正在像这样注册我的 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"); }
我在编写单元测试时遇到了同样的问题,原因是 .NET 8 引入的内部服务注册。请参见此处:DefaultHttpClientBuilder - dotnet/runtime
他们正在尝试使用 LINQ
.Single()
方法解析该跟踪器类,因为他们不希望注册的类不存在。
我目前已禁用该特定单元测试,但很抱歉,这根本无法解决您的问题,因为它们破坏了它(.NET 7 和更早版本没有此问题。)