J'ai créé une application console pour consommer une API Web que je viens de créer. Le code de l'application console ne se compile pas. Cela 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 laquelle 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 l'ai consommée à partir d'un client MVC.
la source
Assurez-vous que vous avez installé le
correct NuGet package
dans votre application console:et que vous ciblez au moins .NET 4.0.
Ceci étant dit, votre
GetAllFoos
fonction est définie pour renvoyer unIEnumerable<Prospect>
alors que dans votreReadAsAsync
méthode vous passezIEnumerable<Foo>
des types qui ne sont évidemment pas compatibles.Install-Package Microsoft.AspNet.WebApi.Client
la source
Microsoft.AspNet.WebApi.Client
NuGet. Cela téléchargera la dernière version sur Internet et référencera l'assemblage dans votre application console. C'est exactement ce que fait le modèle de projet ASP.NET MVC et c'est la raison pour laquelle vous n'avez rien à installer pour qu'il fonctionne. Mais dans votre application console, il n'y a rien de tel.Install-Package Microsoft.AspNet.WebApi.Client
et essayez le code.essayez cette console du gestionnaire de packages
Install-Package System.Net.Http.Formatting.Extension -Version 5.2.3, puis ajoutez à l'aide de l'ajout de référence.
la source
L'ajout d'une référence à System.Net.Http.Formatting.dll peut provoquer des problèmes d'incompatibilité DLL. À l'heure actuelle, System.Net.Http.Formatting.dll semble faire référence à la version 4.5.0.0 de Newtonsoft.Json.DLL, alors que la dernière version est 6.0.0.0. Cela signifie que vous devrez également ajouter une redirection de liaison pour éviter une exception d'assembly .NET si vous référencez le dernier package ou DLL Newtonsoft NuGet:
Une solution alternative à l'ajout d'une référence à System.Net.Http.Formatting.dll consiste donc à lire la réponse sous forme de chaîne, puis à vous désaraliser avec JsonConvert.DeserializeObject (responseAsString). La méthode complète serait:
la source
ou si vous avez VS 2012, vous pouvez accéder à la console du gestionnaire de packages et saisir Install-Package Microsoft.AspNet.WebApi.Client
Cela téléchargerait la dernière version du package
la source
UTILISEZ cette référence d'assemblage dans votre projet
la source