web-dev-qa-db-fra.com

HttpClient dans ASP.NET 5.0 non trouvé?

En utilisant VS2015 et asp.net 5, lorsque je tente de compiler mon site en utilisant une instance de System.Net.HttpClient, cela me dit:

Impossible de trouver le type ou le nom de l'espace de noms 'HttpClient' (vous manque-t-il une directive using ou une référence Assembly?)

En survolant le code incriminé, je vois:

"WebApplication1.ASP.NET 5.0 - Available"
"WebApplication1.ASP.NET Core 5.0 - Not Available"

J'ai 2 frameworks répertoriés dans mon fichier project.json:

"frameworks": {
    "aspnet50": { },
    "aspnetcore50": { }
},

Je suppose que l'un d'eux est responsable du fait de ne pas avoir l'Assemblée, mais je ne sais pas vraiment comment le réparer ou comment cela fonctionne.

Comment puis-je faire en sorte que le site fonctionne avec HttpClient au lieu de générer des erreurs? La méthode fautive affichée ci-dessous:

private async Task<string> GetStringFromUri()
{
    using (var httpClient = new HttpClient())
    {
        result = await httpClient.GetStringAsync(
        new Uri("http://baconipsum.com/api/?type=meat-and-filler"));

        viewModel= result;
        return viewModel;
    }
}
22
damccull

Finalement, tout s'est bien passé. @yuval m'a mis sur la bonne voie avec sa réponse sur l'ajout de dépendances et sur le fait que la classe existe sur github. Des recherches plus approfondies m'ont amené à comprendre que la classe ne semble pas encore être incluse dans la version de prévisualisation, et j'ai donc dû ajouter ce référentiel de pépites à mon projet: https://www.myget.org/gallery/aspnetvnext

Ce repo contient des versions nocturnes des paquets asp.net vnext nuget, qui contenaient la classe que je veux. L'ajout de la ligne suivante à ma section de dépendances principale et aux sections de dépendances des deux frameworks a fonctionné de manière satisfaisante pour moi: "Microsoft.Net.Http.Client": "1.0.0.0-rc1-10049"

"dependencies": {
    [...],
    "Microsoft.Net.Http.Client": "1.0.0.0-rc1-10049"
},
"frameworks": {
    "aspnet50": {
        "dependencies": {
            "Microsoft.Net.Http.Client": "1.0.0-rc1-10049"
        }
    },
    "aspnetcore50": {
        "dependencies": {
            "Microsoft.Net.Http.Client": "1.0.0-rc1-10049"
        }
    }
} 
15
damccull

J'ai rencontré le même problème aujourd'hui et la solution s'est quelque peu simplifiée en 2016.

Il n'est plus nécessaire d'ajouter un nouveau référentiel Nuget. 

Lors de l'ajout de System.Net.Http (version actuelle 4.0.1-beta-23516), vous obtiendrez toujours la même erreur si vous ciblez une version clr ainsi qu'une version principale de l'infrastructure. Il est donc nécessaire de copier la dépendance dans la liste des dépendances de l'infrastructure Obtenez votre code compiler.

Avant:

"frameworks": {
    "dnx451": { 
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
     },
    "dnxcore50": { }
  }

Après:

"frameworks": {
    "dnx451": {
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
    },
    "dnxcore50": {
      "dependencies": {
        "System.Net.Http": "4.0.1-beta-23516"
      }
    }
  }
11
Marco

Vous devez ajouter une nouvelle source à votre gestionnaire de paquets Nuget ( https://www.myget.org/F/aspnetvnext ), puis ajouter des dépendances à votre fichier project.json. Pour dnx451 et dnxcore50:

{
   "frameworks": {
       "dnx451": {
         "frameworkAssemblies": {
             "Microsoft.Net.Http.Client": "1.0.0-beta3-10053"
              }
         },
         "dnxcore50": {
            "frameworkAssemblies": {
               "Microsoft.Net.Http.Client": "1.0.0-beta3-10053"
               }
          }
 }

Il est implémenté dans le cadre du package ASP.Net xNext, comme indiqué dans github :

Implémentation entièrement gérée de HttpMessageHandler basée sur des sockets.

Ce projet fait partie de ASP.NET vNext. Vous pouvez trouver des échantillons, documentation et instructions de démarrage pour ASP.NET vNext à l’adresse le home repo.

Une procédure complète peut être trouvée ici

6
Yuval Itzchakov

J'ai eu du mal à trouver dans RC1 aujourd'hui:

Pour tous ceux qui trouvent cette question à partir de là, HttpClient est maintenant dans l'espace de noms System.Net.Http.

4
Kevin Stricker

Ajoutez simplement ceci à votre project.json

"dependencies": {
    ...
    "Microsoft.Net.Http": "2.2.7-beta"
},

ou quelle que soit la dernière version.

3
Alkasai

Il manquait un lien dans ce fil pour moi .... vous devez ajouter la source https://www.myget.org/gallery/aspnetvnext NuGet, mais l'URL du flux NuGet est " https://www.myget.org/F/aspnetvnext/ '. Une fois que vous avez cela comme source de pépites, le reste reprend vie.

De plus, au moment de la rédaction de cet article (17 juin 2015), la version est "Microsoft.Net.Http.Client": "1.0.0-beta3-10053".

Vous devrez également utiliser la section "frameworks" mise à jour de Matt DeKreys edit le 7 juin (dnx451 et dnxcore50).

0
Martin Kearn