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

Joh*_*ohn 6 .net-core .net-6.0

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

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

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

控制台应用程序是使用 .NET 6.0 全新创建的,其唯一的包引用位于Microsoft.Extensions.Hosting6.0.1。为什么不给我IHttpClientBuilder

编辑:

dotnet new console
dotnet add package Microsoft.Extensions.Hosting
Run Code Online (Sandbox Code Playgroud)

仅编辑Program.cs

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

var host = Host.CreateDefaultBuilder(args);

host.ConfigureServices(services =>
{
    services.AddHttpClient(); // not found
});
Run Code Online (Sandbox Code Playgroud)

发现IHttpClientBuilder朋友仍然不在那儿。

小智 17

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

我遇到了完全相同的问题,并且我阅读的微软文档没有明确提到这一点。当我阅读这篇博文时,这一点变得显而易见:Adam Storr 的《在 .NET 5.0 中使用 HttpClient 调用 REST API 的简单示例》。作者在其中添加了这两个包。

在重新查看 的文档时HttpClientFactoryServiceCollectionExtensions,我注意到在“定义”标题下,命名空间是 ,Microsoft.Extensions.DependencyInjection但程序集是Microsoft.Extensions.Http.dll