it-swarm.com.de

System.Net.Http: fehlt im Namespace? (mit .net 4.5)

TL; DR: Ich bin neu in dieser Sprache und habe keine Ahnung, was ich mache

hier ist meine Klasse bisher:

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

wenn ich csc filename.cs mache, erhalte ich die folgende Fehlermeldung:

Der Typ- oder Namespace-Name 'Http' ist im Namespace 'System.Net' nicht vorhanden (fehlt eine Assemblyreferenz?)

86
NullVoxPopuli

HttpClient lebt im Namespace System.Net.Http .

Sie müssen hinzufügen:

using System.Net.Http;

Stellen Sie sicher, dass Sie in .NET 4.5 auf System.Net.Http.dll verweisen.


Der veröffentlichte Code scheint nichts mit webClient zu tun. Stimmt etwas nicht mit dem Code, der HttpWebRequest tatsächlich kompiliert?


Update

Um den Dialog Add Reference zu öffnen, klicken Sie mit der rechten Maustaste auf Ihr Projekt in Solution Explorer und wählen Sie Add Reference ... aus. Es sollte ungefähr so ​​aussehen:

enter image description here

93
M.Babcock

NuGet> Microsoft ASP.NET-Web-API-Clientbibliotheken

69
user1662812

Wie habe ich es gelöst?.

  1. Projekt (!) "Eigenschaften" öffnen, "Anwendung" wählen, Targeting-Framework auswählen ".Net Framework 4.5"
  2. Klicken Sie mit der rechten Maustaste auf Ihr Projekt -> Referenz hinzufügen
  3. Stellen Sie sicher, dass in "Assemblies" -> "Extensions" die Option "System.Net.Http" deaktiviert ist
  4. Gehen Sie zu "Assemblies" -> "Framework" und wählen Sie die Optionen "System.Net.Http" und "System.Net.Http" aus
  5. Das ist alles

In meinem Fall hatte ich am Anfang .Net 4.0 und "Assemblies" -> "Extensions" die Option "System.Net.Http" mit der Version 2.0.0.0. Nach meinen Aktionen "Assemblies" -> "Framework" hatten die Optionen "System.Net.Http" und "System.Net.Http" die gleiche Version 4.0.0.0.

12
LagiNatoRRR

Visual Studio Package Manager-Konsole> Installationspaket Microsoft.AspNet.WebApi.Client

9
lance-p

Wenn Sie davon ausgehen, dass Sie Visual Studio 10 verwenden, können Sie hier eine Installation mit System.Net.Http für Visual Studio 10 herunterladen: MVC4 für VS10 herunterladen

Klicken Sie nach der Installation mit der rechten Maustaste auf den Ordner References im VS-Projekt und wählen Sie dann Referenz hinzufügen .. _. Wählen Sie dann die Registerkarte Browse aus. Navigieren Sie zu dem Installationspfad assemblies für die MVC4-Installation (normalerweise unter Programme (x86)/Microsoft ASP.NET/ASP.NET MVC4/Assemblys) und wählen Sie die Assembly mit dem Namen 'System.Net.Http.dll' aus. Jetzt können Sie Ihr 'using System.Net.Http' oben in Ihrem Code hinzufügen und mit dem Erstellen von HttpClient-Verbindungen beginnen.

5
Ussabin

Für mich war es das Nuget-Paket Microsoft.Net.Http .. ( https://blogs.msdn.Microsoft.com/bclteam/p/httpclient/ )

3
Elferone

Sie benötigen einen Verweis auf die System.Web.Http-Assembly mit der HTTPClient-Klasse, die Sie verwenden möchten. Fügen Sie vor der Klassendeklaration die folgende Zeile ein

using System.Web.Http;

Wenn Sie immer noch den Fehler erhalten, versuchen Sie dies in Visual Studio.

  1. Klicken Sie mit der rechten Maustaste auf den Ordner "Referenzen" in Ihrem Projekt.
  2. Wählen Sie Referenz hinzufügen.
  3. Wählen Sie die Registerkarte .NET (oder klicken Sie auf die Schaltfläche Durchsuchen, wenn es sich nicht um eine .NET Framework-Assembly handelt).
  4. Doppelklicken Sie auf die Assembly, die den Namespace enthält, in der Fehlermeldung (System.Web.Http.dll).
  5. Drücken Sie die OK-Taste.
3
Akhil

einfach Referenz hinzufügen und dann hinzufügen

system.net.http

 enter image description here

3
Hussein Talib

Sie benötigen oben einen using System.Net.Http.

2
Keith Nicholas

Um das Problem zu lösen, 

1. Gehen Sie zu Ihrem Lösungs-Explorer. 2. Klicken Sie mit der rechten Maustaste auf den Projektnamen und wählen Sie Hinzufügen 3. Wählen Sie Referenzen aus und lassen Sie das .Net-Framework 4.5 vollständig geladen werden 4. Scrollen Sie nach unten und wählen Sie System.Net.Http aus, und klicken Sie auf OK . Problem gelöst.

0
boakye_wozniac

Ich habe den Fehler auch nach dem Hinzufügen von System.Net.Http zu den Referenzen in Android erhalten und ich hatte bereits das Nugget-Paket Microsoft.net.http installiert. 

Es stellte sich heraus, dass ich das System.Net.Http dem iOS-Projekt nicht hinzugefügt habe. Als ich es tat, löste es das Problem.

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

ich hatte ein ähnliches Problem oder dasselbe Problem und habe es kürzlich behoben. Allerdings hatte ich auch system.net.http hinzugefügt, aber das hat es nicht gelöst. 

0
krishna

HttpClient ist neu in .net 4.5. Sie sollten wahrscheinlich HttpWebRequest verwenden.

0
Kibbee