System.Net.Http:名称空间中缺少?(使用.net 4.5)


102

TL; DR:我是这种语言的新手,不知道我在做什么

到目前为止,这是我的课程:

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Web;
using System.Net;
using System.IO;

public class MyClass
    {
        private const string URL = "https://sub.domain.com/objects.json?api_key=123";
        private const string data = @"{""object"":{""name"":""Title""}}";

        public static void CreateObject()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.ContentLength = data.Length;
            StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
            requestWriter.Write(data);
            requestWriter.Close();

            try
            {
                // get the response
                WebResponse webResponse = request.GetResponse();
                Stream webStream = webResponse.GetResponseStream();
                StreamReader responseReader = new StreamReader(webStream);
                string response = responseReader.ReadToEnd();
                responseReader.Close();
            }
            catch (WebException we)
            {
                string webExceptionMessage = we.Message;
            }
            catch (Exception ex)
            {
                // no need to do anything special here....
            }
        }

        static void Main(string[] args)
        {
            MyClass.CreateObject();
        }
}

当我执行csc filename.cs时,出现以下错误:

类型或名称空间名称“ Http”在名称空间“ System.Net”中不存在(您是否缺少程序集引用?)


您正在尝试从静态方法(webClient字段)访问非静态字段。另外,您永远不会真正将它用于任何用途。您可以将其删除。
2012年

Answers:


106

HttpClient生活在System.Net.Http命名空间中。

您需要添加:

using System.Net.Http;

并确保您System.Net.Http.dll在.NET 4.5中进行引用。


发布的代码似乎与无关webClient。实际使用的代码有什么问题HttpWebRequest吗?


更新资料

要打开“ 添加引用”对话框,请在解决方案资源管理器中右键单击您的项目,然后选择“ 添加引用...”。它看起来应该像这样:

在此处输入图片说明


9
我刚刚安装了.NET 4.5,它说名称空间名称'Http'在名称空间'System.Net'中不存在
NullVoxPopuli 2012年

1
您确定您的项目面向.NET 4.5,并且已添加对它的引用System.Net.Http.dll吗?
M.Babcock 2012年

3
嗯...不,不会。在解决方案资源管理器中右键单击您的项目,然后Add References在出现对话框时单击,选择最左侧的选项卡(我不使用内置引用对话框,但我的名为Assemblies)。滚动列表,直到看到一个名为System.Net.Http双击并重建的项目。
M.Babcock 2012年

1
当然。这是来自MSDN 一些文档。如果您遇到任何麻烦,请告诉我。
M.Babcock 2012年

1
您是否正在使用多个项目的解决方案?您确定将System.Net.Http程序集安装在包含要查看文件的项目中吗?您可以在“包管理器”中调整哪些项目加载哪些nuget包
Haymaker87


15

我是怎么解决的。

  1. 打开项目(!)“属性”,选择“应用程序”,选择定位框架“ .Net Framework 4.5”
  2. 右键单击您的项目->添加参考
  3. 确保在“程序集”->“扩展”中未选中“ System.Net.Http”选项
  4. 转到“程序集”->“框架”,然后选择“ System.Net.Http”和“ System.Net.Http”选项
  5. 仅此而已!

就我而言,我最初使用的是.Net 4.0和版本2.0.0.0的“程序集”->“扩展”选项“ System.Net.Http”。经过我的操作后,“程序集”->“框架”选项中的“ System.Net.Http”和“ System.Net.Http”具有相同的4.0.0.0版本。


那也是我的问题,直到我从.NET 3.5升级到.NET 4.5之前,它都没有显示引用“ System.Net.Http”
FelixJongleur42

10

Visual Studio包管理器控制台>安装包Microsoft.AspNet.WebApi.Client


5

假定您使用的是Visual Studio 10,则可以在此处下载包含Visual Studio 10的System.Net.Http的安装: 下载VS10的MVC4

安装后,右键单击VS Project中的References文件夹,然后选择Add Reference。然后,选择浏览选项卡。导航到MVC4安装的程序集安装路径(通常在Program Files(x86)/ Microsoft ASP.NET/ASP.NET MVC4 / assemblies中),然后选择名为“ System.Net.Http.dll”的程序集。现在,您可以在代码顶部添加“ using System.Net.Http”,并开始创建HttpClient连接。



3

您需要具有要使用System.Web.HttpHTTPClient类的程序集的引用。尝试在类声明之前添加以下行

using System.Web.Http;

如果仍然出现错误,请尝试在 Visual Studio

  1. 右键单击项目上的“引用”文件夹。
  2. 选择添加参考。
  3. 选择.NET选项卡(如果不是.NET Framework程序集,则选择“浏览”按钮)。
  4. 双击错误消息(System.Web.Http.dll)中包含名称空间的程序集。
  5. 按确定按钮。

@TheLindyHop:您可以尝试按照更新后的答案中的步骤进行吗?
Akhil 2012年

@Akhil- HttpClient属于System.Web.Http.dll.NET 4.5程序集(不是System.Net)。
M.Babcock 2012年

@ M.Babcock:谢谢让我知道。Ive更新了答案:)
Akhil 2012年

如何获得引用文件夹显示?我从一个文件开始:在任何项目之外= \
NullVoxPopuli 2012年

好的,右键单击您的项目,然后选择Properties。您应该References在左侧看到。
Akhil 2012年



1

HttpClient是.net 4.5中的新增功能。您可能应该使用HttpWebRequest


问题中包含的代码已经使用HttpWebRequest,但不确定为什么他们不使用它。
M.Babcock 2012年

同意 HTTPClient已声明,但从未使用过。很奇怪。
Kibbee 2012年

我遇到一个问题,包括它的名称空间。使用System.Net.Http; 出现错误“ Http”在名称空间“ System.Net”中不存在
NullVoxPopuli 2012年

您确定使用的是.Net 4.5编译器吗?
Kibbee 2012年

0

解决问题:

  1. 转到您的解决方案资源管理器。
  2. 右键单击项目名称,然后选择添加
  3. 选择引用并允许。Net framework 4.5完成加载
  4. 向下滚动并选择System.Net.Http,然后单击确定。

问题解决了。


0

将“ Copy Local”属性设置为True可以为我做这件事。展开引用,右键单击System.Net.Http,然后在属性窗口中将“复制本地”属性的值更改为True。我正在使用VS2019。



0

使用Nuget软件包管理器安装Microsoft.AspNet.WebApi.Core。

在这之后:

using System.Web.Http;

或者如果您使用VB

imports System.Web.Http



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.