128 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.

130voto

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

14 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 ?

106voto

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

6voto

Ussabin Points 35

En supposant que vous utilisez Visual Studio 10, vous pouvez télécharger une installation qui inclut System.Net.Http, pour Visual Studio 10 ici : télécharger MVC4 pour VS10

Une fois que vous l'avez installé, cliquez avec le bouton droit de la souris sur l'icône de l'ordinateur. Références dans le projet VS, puis sélectionnez Ajouter une référence . Ensuite, sélectionnez le Parcourir onglet. Naviguez jusqu'au assemblages Le chemin d'installation de MVC4 (généralement dans Program Files(x86)/Microsoft ASP.NET/ASP.NET MVC4/assemblies) et sélectionnez l'assemblage nommé 'System.Net.Http.dll'. Vous pouvez maintenant ajouter votre "using System.Net.Http" en haut de votre code et commencer à créer des connexions HttpClient.

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