130 votes

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

TL ; DR : Je suis nouveau dans cette langue et je n'ai aucune idée de ce que je fais.

Voici ma classe jusqu'à présent :

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

lorsque je fais csc filename.cs, j'obtiens l'erreur suivante :

Le nom de type ou d'espace de nom 'Http' n'existe pas dans l'espace de nom 'System.Net' (il vous manque une référence d'assemblage ?).

0 votes

Vous essayez d'accéder à un champ non statique à partir d'une méthode statique (la méthode webClient ). De plus, vous ne l'utilisez jamais vraiment pour quoi que ce soit. Vous pourriez probablement le supprimer.

134voto

M.Babcock Points 10653

HttpClient vit dans le System.Net.Http espace de noms.

Vous aurez besoin d'ajouter :

using System.Net.Http;

Et assurez-vous que vous faites référence System.Net.Http.dll dans .NET 4.5.


Le code affiché ne semble pas faire quoi que ce soit avec webClient . Y a-t-il quelque chose qui ne va pas dans le code qui est en train de compiler avec HttpWebRequest ?


Mise à jour

Pour ouvrir le Ajouter une référence cliquez droit sur votre projet dans Explorateur de solutions et sélectionnez Ajouter une référence... . Cela devrait ressembler à quelque chose comme :

enter image description here

17 votes

Je viens d'installer .NET 4.5, et il est indiqué que le nom de l'espace de noms 'Http' n'existe pas dans l'espace de noms 'System.Net'.

3 votes

Êtes-vous sûr que votre projet cible .NET 4.5 et que vous avez ajouté la référence à l'adresse suivante System.Net.Http.dll ?

0 votes

Je ne suis pas sûr, c'est juste un fichier .cs. =\ Alors ... dois-je encore ajouter une référence à ce fichier ? Ne devrait-il pas choisir automatiquement le dernier ?

108voto

user1662812 Points 438

NuGet > Paquet Microsoft.AspNet.WebApi.Client

5 votes

Cela a pratiquement résolu le problème pour moi. J'ai installé ce paquet : nuget.org/packages/Microsoft.AspNet.WebApi.SelfHost/5.2.2

4 votes

La réponse acceptée (ajouter une référence) ne m'a pas aidé mais celle-ci l'a fait. Merci.

1 votes

C'est l'approche correcte à adopter. L'ajout d'une référence à une dll peut poser des problèmes sur un serveur de construction. Le fait d'avoir le paquet nuget correct résoudra le problème.

18voto

LagiNatoRRR Points 161

Comment je l'ai résolu.

  1. Ouvrez le projet ( !) "Propriétés", choisissez "Application", sélectionnez le cadre de ciblage ".Net Framework 4.5".
  2. Clic droit sur votre projet -> Ajouter une référence
  3. Assurez-vous que dans "Assemblies" -> "Extensions", l'option "System.Net.Http" n'est pas cochée.
  4. Allez dans "Assemblies" -> "Framework" et sélectionnez les options "System.Net.Http" et "System.Net.Http".
  5. C'est tout !

Dans mon cas, j'avais au début .Net 4.0 et "Assemblies" -> "Extensions" option "System.Net.Http" avec la version 2.0.0.0. Après mes actions "Assemblies" -> "Framework" options "System.Net.Http" et "System.Net.Http" avaient la même version 4.0.0.0.

0 votes

C'était le problème pour moi aussi, la référence "System.Net.Http" n'apparaissait pas jusqu'à ce que je passe de .NET 3.5 à .NET 4.5.

11voto

lance-p Points 546

Console du gestionnaire de paquets de Visual Studio > Installer le paquet Microsoft.AspNet.WebApi.Client

7voto

Hussein Alrubaye Points 875

Il suffit d'aller dans ajouter une référence puis ajouter

system.net.http

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X