System.Net.Http: missing from namespace? (using .net 4.5)

TL; DR: I'm new to this language and have no idea what I'm doing

here is my class so far:

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();
}
}

when I do csc filename.cs, I get the following error:

The type or namespace name 'Http' does not exist in the namespace 'System.Net' (are you missing an assembly reference?)

400204 次浏览

你需要一个 using System.Net.Http在顶部。

HttpClient 位于 System.Net.Http名称空间中。

你需要加上:

using System.Net.Http;

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


张贴的代码似乎没有与 webClient做任何事情。实际使用 HttpWebRequest编译的代码有什么问题吗?


更新

要打开 添加引用对话框,右键单击 解决方案资源管理器中的项目并选择 添加参考文献..。。它应该是这样的:

enter image description here

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

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

using System.Web.Http;

如果仍然得到错误,请尝试在 Visual Studio中执行此操作

  1. 右键单击项目上的 References 文件夹。
  2. 选择 Add Reference。
  3. 选择.NET 选项卡(如果不是.NETFramework 程序集,则选择 Browse 按钮)。
  4. 双击错误消息(System.Web.Http.dll)中包含命名空间的程序集。
  5. 按 OK 键。

NuGet > Microsoft. AspNet. WebApi. Client package

假设您使用的是 VisualStudio10,则可以下载包含 System 的安装。网。对于 VisualStudio10,这里是: 下载 VS10版本的 MVC4

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

为了解决这个问题:

  1. 转到解决方案资源管理器。
  2. 右键单击项目名称并选择 add
  3. Select references and allow the .Net framework 4.5 to finish loading
  4. 向下滚动,选择 System.Net.Http并单击 ok。

问题解决了。

我是怎么解决的。

  1. 打开 project (!)“ Properties”,选择“ Application”,选择瞄准框架“ .Net Framework 4.5”
  2. 右键单击您的项目-> 添加引用
  3. 确保“ Assembly”-> “ Extended”选项中的“ System.Net.Http”未选中
  4. 转到“ Assembly”-> “ Framework”并选择“ System.Net.Http”和“ System.Net.Http”选项
  5. 仅此而已!

在我的情况下,我在开始的时候。Net 4.0和“程序集”-> “扩展”选项“系统”。网。版本2.0.0。我的行动后“程序集”-> “框架”选项“系统。网。和“系统”。网。Http”有相同的4.0.0.0版本。

只要去添加参考,然后添加

system.net.http

enter image description here

Visual Studio Package Manager Console > Install-Package Microsoft.AspNet.WebApi. Client

对我来说,这是得到了微软的核心软件包 .(https://blogs.msdn.microsoft.com/bclteam/p/httpclient/)

在 VisualStudio 中,您可以使用 nuget 来加载包

Microsoft.AspNet.WebApi.WebHost

为引用设置“ CopyLocal”属性 True 对我来说就是这样。展开“引用”,右键单击“系统”。网。并在属性窗口中将 CopyLocal 属性的值更改为 True。我用的是 VS2019。

With the Nuget Package Manager install Microsoft.AspNet.WebApi.Core.

在这之后:

using System.Web.Http;

或者如果你使用 VB

imports System.Web.Http

升级到。NET Framework 4.7.2.我找到了系统的 Nuget 软件包。网。不再推荐使用 HTTP。以下是一些变通办法: