类型或命名空间“HttpClient”找不到。

21

我对这个引用错误感到非常困扰。我已经添加了 Microsoft.Net.Http Nuget 包,确保页面中添加了 System.Net.Http 引用,并且在类中导入了 System.Net.Http 命名空间。但是仍然无法解决问题。我甚至尝试使用空白模板从头开始重新创建项目。

请问有人能提供一些想法吗?谢谢!


3
你使用的是哪个版本的 .Net?https://dev59.com/hWsz5IYBdhLWcg3wmpL0 - David Brabant
1
好问题。我正在针对4.6.1版本。 - christok
没有问题。已安装最新稳定版4.0.0 System.Net.Http的Visual Studio 2015 Express,然后使用System.Net.Http;,接着HttpClient client = new HttpClient(); - 一切正常运作。该项目使用的是.Net 4.5。 - st_stefanov
尝试在类的任何方法体中输入:System.Net.Http. 并在最后一个点后,是否显示InteliSense? - st_stefanov
@Balah:命名空间是{Project}.App_Code。我也尝试过更改,但无济于事。 - christok
显示剩余5条评论
9个回答

24

不确定您是否已经尝试过这个方法,但:

我所做的一切就是在项目引用中添加了System.Net.Http。

在项目资源管理器中,右键单击“引用” -> 添加引用,然后从DLL列表中勾选相关复选框并单击“确定”即可。


当我已经将System.Net.Http添加到我的引用中,但它仍然告诉我要将其添加到我的引用中时,那该怎么办? - Dave W.

11
在我的Visual Studio 2017 Xamarin.forms项目中,我也遇到了同样的问题。 如果我右键单击解决方案,会有一个 "管理NuGet包..." 如果我选择它,在“浏览”中查找“System.net” 我选择了找到的项,输入图像描述 勾选了项目的复选框并单击了“安装”。

8

使用完全限定名称:

public void MyMethod()
{
    System.Net.Http.HttpClient client = ....
}

替代方案:

using System.Net.Http
public class MyClass
{
    public void MyMethod()
    {
        HttpClient client = ...
    }
}

这应该能帮助你找出你遇到的问题。如果是名称冲突的话...


谢谢您的建议。我也尝试了,但仍然出现错误...在命名空间'System.Net.Http.'中不存在 :( - christok
好的,在这种情况下,我需要请您与我们分享代码,以便我们能够帮助您。 - st_stefanov
很抱歉,这是专有的,我不能这样做。但是很容易复制:使用system.net.http; 命名空间测试{公共类测试{var客户端=新的HttpClient();}}} - christok
是的,我的意思是创建一个空白项目,在NuGet管理器中获取DLL并引用它。如果你遇到了问题,请共享能够演示你问题的代码。 - st_stefanov
感谢所有尝试解决这个问题的人。我只是复制了另一个项目,其中这个问题得到了正确的解决,删除了所有类,并复制了来自不起作用的项目的类。但愿我知道真正发生了什么,但我不能再浪费时间在这上面了。 :( - christok

8
如果目标是4.6.2或以上版本,则忽略任何nuget包的安装,只要它们被安装,因为它们是现有引用的依赖项。然后,打开引用dll的.csproj文件,并删除任何特定版本的关联,使得引用现在看起来像这样(较旧的csproj格式):
<Reference Include="System.Net.Http" />

之前,我的配置大致如下:

<Reference Include="System.Net.Http, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\System.Net.Http.4.3.3\lib\net46\System.Net.Http.dll</HintPath>
  <Private>True</Private>
  <Private>True</Private>
</Reference>

这将强烈鼓励msbuild在针对的框架中使用GAC中的版本。在我的情况下,我针对的是4.7.2,并且它在由于NuGet包的版本冲突而发出警告时使用了该版本。

太厉害了!你是怎么诊断出这个问题的?我自己解决不了。 对我来说,这个项目在本地构建得很好,但在Azure DevOps管道上却抛出了相同的错误。 - Mohammad Mudassir

2

步骤1:

右键单击您的命名空间,即项目 -> 添加 -> 添加Nuget包。

步骤2:

搜索system.net.http并添加包。

步骤3:

using System.Net.Http;添加到您的cs类中。


1

0
在我的情况下,解决方案是将Visual Studio Professional 2017从15.x.y升级到15.9.18。

0

请确保您的构建环境是 .NET 4.5 及以上版本。我之前使用的是 .NET 4.0,但该库无法正常工作。您需要将解决方案迁移到 4.5 版本,并使用 Nuget 进行安装。


0

由于您已经添加了Microsoft.Net.Http Nuget包,因此在项目引用中的System.Net.Http旁边必须有一个感叹号,如下所示: enter image description here

您需要将其删除并再次添加:右键单击它,然后选择“删除”,现在从dll列表中再次添加它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接