IServiceCollection 不包含 AddHttpClient 的定义

Posted

技术标签:

【中文标题】IServiceCollection 不包含 AddHttpClient 的定义【英文标题】:IServiceCollection does not contain a defintion for AddHttpClient 【发布时间】:2018-08-30 07:36:04 【问题描述】:

我正在尝试在我的 .net core 2.0 项目中使用 HttpClient,为此我在控制器中注入了 HttpClient。但是当我尝试在我的 startup.cs 中配置 httpclient 时,我收到了这个错误:“”。我已经引用了using Microsoft.AspNetCore.Http;using Microsoft.Extensions.DependencyInjection;,这就是我想要做的:

services.AddHttpClient<TestController>();

它在具有相同命名空间的其他项目中运行良好,但在这里我得到了错误。有什么帮助吗?

【问题讨论】:

【参考方案1】:

你需要从NuGet安装Microsoft.Extensions.Http

【讨论】:

确保为您的目标框架安装正确的版本。例如如果您的目标是 .net core 3.1,那么您需要安装此软件包的 3.1.x 版本。否则,您可能会收到类似System.Private.CoreLib: Could not load file or assembly 'Microsoft.Extensions.Logging.Abstractions, Version=X.X.X.X 的错误 @mfa 这个评论救了我,谢谢 我通过安装 Microsoft.Extensions.Http.Polly 解决了这个问题【参考方案2】:

啊,我找到了解决方案。我认为services.AddHttpClient 与.net core 2.1 一起工作。所以我将我的 .net 核心版本更新为 2.1,并将微软软件包更新为 2.1,它开始工作了。

【讨论】:

我认为您将 .NET Standard 和 .NET Core 混淆了? Core 3.0 实现了标准 2.1。见表:docs.microsoft.com/en-us/dotnet/standard/net-standard

以上是关于IServiceCollection 不包含 AddHttpClient 的定义的主要内容,如果未能解决你的问题,请参考以下文章

使用 IServiceCollection.AddTransient、IServiceCollection.AddSingleton 和 IServiceCollectionAddScoped 方法的

使用 IServiceCollection.AddTransient、IServiceCollection.AddSingleton 和 IServiceCollectionAddScoped 方法的

IServiceCollection 和 IMvcBuilder 之间是啥关系?

通过调用“IServiceCollection.AddHealthChecks”添加所有必需的服务

在IServiceCollection扩展方法中读取选项构建器的属性

将 memorycache 注入 .NET 5 控制台应用程序