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

Nul*_*uli 97 c# api rest post

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();
        }
}
Run Code Online (Sandbox Code Playgroud)

当我做csc filename.cs时,我收到以下错误:

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

M.B*_*ock 103

HttpClient住在System.Net.Http命名空间中.

你需要添加:

using System.Net.Http;
Run Code Online (Sandbox Code Playgroud)

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


发布的代码似乎没有做任何事情webClient.实际编译的代码是否有问题HttpWebRequest


更新

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

在此输入图像描述

  • 我刚刚安装了.NET 4.5,它说名称空间'System.Net'中不存在命名空间名称'Http' (9认同)
  • 您确定您的项目面向 .NET 4.5 并且您已添加对“System.Net.Http.dll”的引用吗? (3认同)
  • 嗯......不,不会.在_Solution Explorer中右键单击您的项目,并在对话框出现时单击"添加引用",选择最左侧的选项卡(我不使用内置引用对话框,但我的名称为_Assemblies_).滚动列表,直到看到名为`System.Net.Http`的项目双击它并重建. (3认同)
  • 当然。[这里](http://msdn.microsoft.com/en-us/library/bb398202.aspx) MSDN 中的一些文档用于执行此操作。如果您遇到任何麻烦,请告诉我。 (2认同)
  • 您正在使用多个项目的解决方案吗?您确定 System.Net.Http 程序集已安装在包含您正在查看的文件的项目中吗?您可以在包管理器中调整哪些项目加载哪些nuget包 (2认同)

use*_*812 76

NuGet> Microsoft ASP.NET Web API客户端库

  • 这几乎解决了我的问题.我安装了这个软件包:https://www.nuget.org/packages/Microsoft.AspNet.WebApi.SelfHost/5.2.2 (4认同)
  • 接受的答案(添加参考)并没有帮助我,但确实如此.谢谢. (3认同)

小智 14

我是怎么解决的

  1. 打开项目(!)"属性",选择"应用程序",选择目标框架".Net Framework 4.5"
  2. 右键单击您的项目 - >添加引用
  3. 确保未选中"Assemblies" - >"Extensions"选项"System.Net.Http"
  4. 转到"Assemblies" - >"Framework"并选择"System.Net.Http"和"System.Net.Http"选项
  5. 这就是全部!

在我的情况下,我在开始.Net 4.0和"Assemblies" - >"Extensions"选项"System.Net.Http"与版本2.0.0.0.在我的操作"Assemblies" - >"Framework"选项"System.Net.Http"和"System.Net.Http"之后有相同的4.0.0.0版本.


lan*_*e-p 10

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


Uss*_*bin 5

假设你使用Visual Studio 10,你可以在这里为Visual Studio 10 下载包含System.Net.Http的安装: 下载VSC的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连接.


小智 5

只需添加引用然后添加

system.net.http
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明