it-swarm.com.ru

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

TL; ДР: Я новичок в этом языке и понятия не имею, что я делаю

вот мой класс до сих пор:

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

86
NullVoxPopuli

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

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

using System.Net.Http;

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


Размещенный код, похоже, ничего не делает с webClient. Что-то не так с кодом, который фактически компилируется с использованием HttpWebRequest?


Обновление

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

enter image description here

93
M.Babcock

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

69
user1662812

Как я это решил.

  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.

12
LagiNatoRRR

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

9
lance-p

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

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

5
Ussabin

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

3
Elferone

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

using System.Web.Http;

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

  1. Щелкните правой кнопкой мыши на папке References в вашем проекте.
  2. Выберите Добавить ссылку.
  3. Выберите вкладку .NET (или нажмите кнопку «Обзор», если это не сборка .NET Framework).
  4. Дважды щелкните по сборке, содержащей пространство имен, в сообщении об ошибке (System.Web.Http.dll).
  5. Нажмите кнопку ОК.
3
Akhil

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

system.net.http

 enter image description here

3
Hussein Talib

Вам понадобится using System.Net.Http вверху.

2
Keith Nicholas

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

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

0
boakye_wozniac

Я продолжал получать ошибку даже после добавления использования System.Net.Http к ссылкам в Android, и я уже установил пакет самородков Microsoft.net.http. 

Оказалось, что я не добавил System.Net.Http в проект iOS, когда я это сделал, это решило проблему.

0
Dyary
                                      use system.Net, 
                                     system.Net.WebRequest

у меня была похожая проблема или такая же проблема, и я ее недавно исправил. Однако у меня также был добавлен system.net.http, но это не помогло. 

0
krishna

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

0
Kibbee