【发布时间】:2020-02-13 14:17:55
【问题描述】:
我使用 .net core 3.0 使用 Generic Host Builder 构建了一个命令行应用程序。如果我使用 AddHttpClient 将 HttpClient 添加到服务中,则请求 HttpClient 的服务无法解析并出现错误“无法解析类型为 'System.Net.Http.HttpClient' 的服务”
如果我自己注册 HttpClient 则它会解析,因此除非它是 Http 服务器,否则 AddHttpClient 似乎不起作用。
我发现整个 AddHttpClient 方法更具吸引力,因为我可以轻松添加策略等。事实上,我正在尝试创建一个可重用的组件,我可以在应用程序(Web 和非 Web)之间共享它来构建一致的 HttpClient。
构建主机
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHttpClient(); // This fails to resolve HttpClient
//services.AddSingleton<HttpClient>(provider => new HttpClient()); //This resolves okay
services.AddSingleton<TestClass>();
});
需要 HttpClient 但无法解析的类
public class TestClass : ITestClass
{
public TestClass(HttpClient client)
{
}
}
public interface ITestClass
{
}
【问题讨论】:
-
您正在寻找typed client。
AddHttpClient只是添加工厂