【问题标题】:System.Net.Http: missing from namespace? (using .net 4.5)System.Net.Http:命名空间中缺少? (使用.net 4.5)
【发布时间】:2012-03-25 13:28:39
【问题描述】:

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 时,我收到以下错误:

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

【问题讨论】:

  • 您正在尝试从静态方法(webClient 字段)访问非静态字段。此外,你从来没有真正将它用于任何事情。你可以直接删除它。

标签: c# rest post


【解决方案1】:

我在升级到 .NET Framework 4.7.2 后遇到了这个问题。我发现不再推荐 System.Net.Http 的 Nuget 包。以下是解决方法:

【讨论】:

  • 谢谢,非常感谢
【解决方案2】:

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

之后:

using System.Web.Http;

或者如果你使用 VB

imports System.Web.Http

【讨论】:

    【解决方案3】:

    NuGet > Microsoft.AspNet.WebApi.Client 包

    【讨论】:

    • 这几乎解决了我的问题。我安装了这个包:nuget.org/packages/Microsoft.AspNet.WebApi.SelfHost/5.2.2
    • 接受的答案(添加参考)对我没有帮助,但确实如此。谢谢。
    • 这是正确的做法。添加对 dll 的引用可能会在构建服务器上造成问题。拥有正确的 nuget 包将解决问题。
    【解决方案4】:

    确保它在您的 web.config 中被引用:

    【讨论】:

    • 想完成你的句子吗? :D
    【解决方案5】:

    为参考设置“复制本地”属性为 True 对我来说是这样。展开 References,右键单击 System.Net.Http 并在属性窗口中将 Copy Local 属性的值更改为 True。我正在使用 VS2019。

    【讨论】:

      【解决方案6】:

      解决问题:

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

      问题解决了。

      【讨论】:

        【解决方案7】:

        在 Visual Studio 中你可以使用 nuget 来加载包

        Microsoft.AspNet.WebApi.WebHost
        

        【讨论】:

          【解决方案8】:

          对我来说,它正在获取 nuget 包 Microsoft.Net.Http .(https://blogs.msdn.microsoft.com/bclteam/p/httpclient/)

          【讨论】:

            【解决方案9】:

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

            您需要添加:

            using System.Net.Http;
            

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


            发布的代码似乎对webClient 没有任何作用。使用HttpWebRequest 实际编译的代码有问题吗?


            更新

            要打开添加引用对话框,请在解决方案资源管理器中右键单击您的项目,然后选择添加引用...。它应该类似于:

            【讨论】:

            • 我刚刚安装了 .NET 4.5,它说命名空间名称 'Http' 在命名空间 'System.Net' 中不存在
            • 您确定您的项目面向 .NET 4.5 并且您已添加对 System.Net.Http.dll 的引用吗?
            • 嗯...不,不会的。在 Solution Explorer 中右键单击您的项目,然后在出现对话框时单击 Add References,选择最左侧的选项卡(我不使用内置的引用对话框,但我的称为 Assemblies )。滚动列表,直到看到一个名为 System.Net.Http 的项目,双击它并重建。
            • 当然。 Here's 来自 MSDN 的一些文档用于执行此操作。如果您遇到任何麻烦,请告诉我。
            • 您是否正在使用包含多个项目的解决方案?您确定 System.Net.Http 程序集安装在包含您正在查看的文件的项目中吗?您可以在包管理器中调整哪些项目加载哪些 nuget 包
            【解决方案10】:

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

            【讨论】:

              【解决方案11】:

              只是去添加参考然后添加

              system.net.http
              

              【讨论】:

                【解决方案12】:

                我是如何解决的。

                1. 打开项目(!)“属性”,选择“应用程序”,选择目标框架“.Net Framework 4.5”
                2. 右键单击您的项目 -> 添加参考
                3. 确保在“程序集”->“扩展”选项“System.Net.Http”中未选中
                4. 转到“程序集”->“框架”并选择“System.Net.Http”和“System.Net.Http”选项
                5. 就是这样!

                在我的情况下,我一开始有 .Net 4.0 和“程序集”->“扩展”选项“System.Net.Http”,版本为 2.0.0.0。在我的操作之后,“程序集”->“框架”选项“System.Net.Http”和“System.Net.Http”具有相同的 4.0.0.0 版本。

                【讨论】:

                • 这也是我的问题,在我从 .NET 3.5 升级到 .NET 4.5 之前它没有显示参考“System.Net.Http”
                【解决方案13】:

                假设您使用 Visual Studio 10,您可以在此处为 Visual Studio 10 下载包含 System.Net.Http 的安装:download MVC4 for VS10

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

                【讨论】:

                  【解决方案14】:

                  您需要在顶部添加using System.Net.Http

                  【讨论】:

                    【解决方案15】:

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

                    using System.Web.Http;
                    

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

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

                    【讨论】:

                    • @TheLindyHop:您可以尝试按照更新答案中的步骤操作吗?
                    • @Akhil - HttpClient 属于 System.Web.Http.dll .NET 4.5 程序集(不是 System.Net)。
                    • @M.Babcock:感谢您让我知道。我已经更新了答案:)
                    • 如何显示参考文件夹?我从一个文件开始:在任何项目之外 =\
                    • 好的,右键单击您的项目,然后选择Properties。您应该在左侧看到References
                    【解决方案16】:

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

                    【讨论】:

                    • 问题中包含的代码已经使用HttpWebRequest,但不确定他们为什么不使用它。
                    • 同意。 HTTPClient 被声明,但从未被使用。很奇怪。
                    • 我遇到了一个问题,包括它的命名空间。使用 System.Net.Http;产生错误“Http”在命名空间“System.Net”中不存在
                    • 您确定您使用的是 .Net 4.5 编译器吗?
                    猜你喜欢
                    • 1970-01-01
                    • 2023-03-26
                    • 1970-01-01
                    • 2018-02-02
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多