【问题标题】:Unable to resolve HttpClient when using AddHttpClient in a .Net Generic Host that is not HTTP Server Implementation在不是 HTTP 服务器实现的 .Net 通用主机中使用 AddHttpClient 时无法解析 HttpClient
【发布时间】: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 clientAddHttpClient 只是添加工厂

标签: c# http .net-core


【解决方案1】:

AddHttpClient 只是添加工厂

您正在寻找typed client

//...
.ConfigureServices((hostContext, services) => {
    services.AddHttpClient<ITestClass, TestClass>();

})
//...

【讨论】:

  • 道歉,可能误解了你的回答,如果我将你的行添加到我的解决方案中,那么它就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
相关资源
最近更新 更多