'Système.Net.Http.HttpContent' ne contient pas une définition pour 'ReadAsAsync' et aucune méthode d'extension
J'ai fait une console application de consommer une API Web je viens de faire. L'application de console code ne compile pas. Il me donne l'erreur de compilation:
'System.Net.Http.HttpContent' does not contain a definition for
'ReadAsAsync' and no extension method 'ReadAsAsync' accepting a
first argument of type 'System.Net.Http.HttpContent' could be
found (are you missing a using directive or an assembly reference?)
Voici une méthode de test dans lequel cette erreur se produit.
static IEnumerable<Foo> GetAllFoos()
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("appkey", "myapp_key");
var response = client.GetAsync("http://localhost:57163/api/foo").Result;
if (response.IsSuccessStatusCode)
return response.Content.ReadAsAsync<IEnumerable<Foo>>().Result.ToList();
}
return null;
}
J'ai utilisé cette méthode et consommés à partir d'un MVC client.
Vous devez vous connecter pour publier un commentaire.
Après un long combat, j'ai trouvé la solution.
Solution: Ajouter une référence à
System.Net.Http.Formatting.dll
. Ce montage est également disponible dans les C:\Program Files\Microsoft ASP.NET\ASP.NET MVC 4\Assemblées dossier.La méthode
ReadAsAsync
est une extension de la méthode déclarée dans la classeHttpContentExtensions
, qui est dans l'espace de nomsSystem.Net.Http
dans la bibliothèqueSystem.Net.Http.Formatting
.Réflecteur est venu au secours!
Assurez-vous que vous avez installé le
corriger NuGet package
dans votre application console:et que vous visez au moins .NET 4.0.
Ceci étant dit, votre
GetAllFoos
fonction est définie pour retourner unIEnumerable<Prospect>
alors que dans votreReadAsAsync
méthode vous êtes de passage àIEnumerable<Foo>
qui, évidemment, ne sont pas des types compatibles.Install-Package Microsoft.AspNet.WebApi.Client
Microsoft.AspNet.WebApi.Client
NuGet. Ceci va télécharger la dernière version de l'internet et de la référence à l'assembly dans votre application de console. C'est exactement ce que l'ASP.NET projet MVC modèle ne et c'est la raison pourquoi vous n'avez pas besoin d'installer quoi que ce soit pour que cela fonctionne. Mais dans votre application de console il n'y a pas une telle chose.Install-Package Microsoft.AspNet.WebApi.Client
et d'essayer le code.Microsoft.AspNet.WebApi.Client
NuGet de l'internet, mais à l'aide de certains mis en cache localement version.essayer cette
Le gestionnaire de Package console
Install-Package De Système.Net.Http.La mise en forme.Extension -Version 5.2.3
et puis les ajouter à l'aide d'ajout de référence .
Ajout d'une référence à System.Net.Http.Formatting.dll peut-DLL causer des problèmes de disparité. Maintenant, System.Net.Http.Formatting.dll apparaît à la version de référence 4.5.0.0 de Newtonsoft.Json.DLL alors que la dernière version 6.0.0.0. Cela signifie que vous devez également ajouter une redirection de liaison vers éviter .NET de l'Assemblée exception si vous faites référence à la dernière Newtonsoft package NuGet ou DLL:
Donc une solution alternative à l'ajout d'une référence à System.Net.Http.Formatting.dll est de lire la réponse à la chaîne, puis desearalize-vous avec JsonConvert.DeserializeObject(responseAsString). La méthode complète serait:
ou si vous avez VS 2012 vous pouvez allez dans le gestionnaire de paquets de la console et tapez
Install-Package Microsoft.AspNet.WebApi.Client
Ce serait de télécharger la dernière version du package
UTILISER Cette Assemblée Referance dans votre Projet