System.Net.Http: отсутствует в пространстве имен? (используя .net 4.5)

68

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" (вам не хватает ссылки на сборку?)

  • 0
    Вы пытаетесь получить доступ к нестатическому полю из статического метода (поле webClient ). Кроме того, вы никогда не используете его для чего-либо. Вы могли бы просто удалить его.
Теги:
rest
post

12 ответов

75
Лучший ответ

HttpClient живет в System.Net.Http Пространство имен.

Вам нужно добавить:

using System.Net.Http;

И убедитесь, что вы ссылаетесь на System.Net.Http.dll в .NET 4.5.


Приведенный код не работает с webClient. Что-то не так с кодом, который на самом деле компилируется с помощью HttpWebRequest?


Обновление

Чтобы открыть диалоговое окно "Добавить ссылку", щелкните правой кнопкой мыши проект в обозревателе решений и выберите "Добавить ссылку". Он должен выглядеть примерно так:

Изображение 7890

  • 8
    Я только что установил .NET 4.5, и он говорит, что имя пространства имен «Http» не существует в пространстве имен «System.Net»
  • 1
    Вы уверены, что ваш проект нацелен на .NET 4.5 и что вы добавили ссылку на System.Net.Http.dll ?
Показать ещё 7 комментариев
49

NuGet > Клиентские библиотеки веб-API Microsoft ASP.NET

  • 3
    Это в значительной степени решило проблему для меня. Я установил этот пакет: nuget.org/packages/Microsoft.AspNet.WebApi.SelfHost/5.2.2
  • 3
    Принятый ответ (добавление ссылки) не помог мне, но это помогло. Благодарю.
Показать ещё 1 комментарий
9

Как я его решил.

  • Откройте проект (!) "Свойства", выберите "Приложение", выберите структуру таргетинга ".Net Framework 4.5"
  • Щелкните правой кнопкой мыши на своем проекте → Добавить ссылку
  • Убедитесь, что в разделе "Ассембли" → "Расширения" опция "System.Net.Http" не отмечена.
  • Перейдите в раздел "Ассемблирования" → "Рамки" и выберите "System.Net.Http" и "System.Net.Http" .
  • Вот и все!

В моем случае я имел в начале .Net 4.0 и "Assemblies" → "Extensions" вариант "System.Net.Http" с версией 2.0.0.0. После моих действий "Ассембли" → "Рамочные" опции "System.Net.Http" и "System.Net.Http" имели ту же версию 4.0.0.0.

  • 0
    офигенно, вы попали в глаза быков.
  • 0
    это было проблемой и для меня, оно не показывало ссылку "System.Net.Http", пока я не обновил .NET 3.5 до .NET 4.5
7

Консоль диспетчера пакетов Visual Studio > Install-Package Microsoft.AspNet.WebApi.Client

5

Предполагая, что вы используете Visual Studio 10, вы можете загрузить установку, которая включает System.Net.Http, для Visual Studio 10 здесь: загрузить MVC4 для VS10

После того, как вы его установили, щелкните правой кнопкой мыши папку "Ссылки" в проекте VS и выберите "Добавить ссылку". Затем выберите вкладку "Обзор". Перейдите к установочному пути сборки для установки MVC4 (обычно в Program Files (x86)/Microsoft ASP.NET/ASP.NET MVC4/assembly) и выберите сборку с именем "System.Net.Http.dll". Теперь вы можете добавить свой "using System.Net.Http" вверху своего кода и начать создавать подключения HttpClient.

3

Для меня он получал пакет nuget Microsoft.Net.Http . (https://blogs.msdn.microsoft.com/bclteam/p/httpclient/)

3

просто перейдите, чтобы добавить ссылку, затем добавьте

system.net.http

Изображение 7891

3

Вам нужна ссылка на сборку System.Web.Http, которая имеет класс HTTPClient, который вы пытаетесь использовать. Попробуйте добавить строку ниже перед объявлением класса

using System.Web.Http;

Если вы все еще получаете ошибку, попробуйте сделать это в Visual Studio

  • Щелкните правой кнопкой мыши на папке "Ссылки" в вашем проекте.
  • Выберите Добавить ссылку.
  • Выберите вкладку .NET(или выберите кнопку "Обзор", если она не является сборкой .NET Framework).
  • Дважды щелкните узел, содержащий пространство имен, в сообщении об ошибке (System.Web.Http.dll).
  • Нажмите кнопку OK.
  • 0
    Спасибо, добавил и обновил мой вопрос.
  • 0
    @TheLindyHop: можете ли вы попробовать выполнить действия в обновленном ответе?
Показать ещё 5 комментариев
2

Вам нужно using System.Net.Http вверху.

  • 1
    Благодарю. это было добавлено, и я обновил свой вопрос.
1

HttpClient является новым в .net 4.5. Вероятно, вы должны использовать HttpWebRequest.

  • 0
    Код, включенный в вопрос, уже использует HttpWebRequest , но не уверен, почему они его не используют.
  • 0
    Согласовано. HTTPClient объявляется, но никогда не используется. Очень странно.
Показать ещё 2 комментария
0
                                      use system.Net, 
                                     system.Net.WebRequest

У меня была аналогичная проблема или такая же проблема и исправлена ​​она недавно. однако у меня также был добавлен файл system.net.http, но это не решило его.

0

Чтобы решить проблему,

1.go к вашему исследователю решений. 2. Щелкните правой кнопкой мыши имя проекта и выберите 3. Выберите ссылки и разрешите .Net framework 4.5 завершить загрузку. 4. Прокрутите вниз и выберите System.Net.Http и нажмите "ОК". Проблема решена.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню