无法在控制台应用程序中使用 AddHttpClient / IHttpClientBuilder

Can't use AddHttpClient / IHttpClientBuilder in console app

我有一些来自 Web 应用程序的代码,这些代码将 http 客户端配置为使用证书。我依赖 IHttpClientBuilderAddHttpClient.

我想在控制台应用程序中使用相同的方法进行测试,但我什至很难让这些类型在那里可用。

文档 here 说我可以在控制台应用程序中使用 Microsoft.Extensions.Hosting(在那里它用于初始化配置),但即使这个包应该依赖于 Microsoft.Extensions.DependencyInjection,上面的类型和方法应该存在的地方,编译器告诉我这些类型是未知的。

控制台应用程序是使用 .NET 6.0 全新创建的,它唯一的包参考是 Microsoft.Extensions.Hosting 6.0.1。为什么那不给我 IHttpClientBuilder

编辑:

之后

dotnet new console
dotnet add package Microsoft.Extensions.Hosting

仅编辑 Program.cs

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

var host = Host.CreateDefaultBuilder(args);

host.ConfigureServices(services =>
{
    services.AddHttpClient(); // not found
});

发现IHttpClientBuilder和朋友还没到

除了 Microsoft.Extensions.DependencyInjection 之外,您还需要添加对 Microsoft.Extensions.Http 包的引用。

我遇到了完全相同的问题,我阅读的 Microsoft 文档没有明确提及这一点。当我阅读此博客 post: Simple Example of Calling REST API with HttpClient in .NET 5.0 by Adam Storr 时,这一点变得很明显。在其中,作者添加了两个包。

在 re-reviewing HttpClientFactoryServiceCollectionExtensions 的文档中,我注意到在“定义”下 header 命名空间是 Microsoft.Extensions.DependencyInjection 但程序集是 Microsoft.Extensions.Http.dll.