Hice una aplicación de consola para consumir una API web que acabo de hacer. El código de la aplicación de consola no se compila. Me da el error de compilación:
'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?)
Aquí hay un método de prueba en el que se produce este error.
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;
}
He usado este método y lo consumí de un cliente MVC.
asp.net
.net
asp.net-mvc
asp.net-web-api
Enfriador de agua v2
fuente
fuente
Asegúrese de haber instalado la
correct NuGet package
aplicación en su consola:y que tiene como objetivo al menos .NET 4.0.
Dicho esto, su
GetAllFoos
función está definida para devolver unIEnumerable<Prospect>
mientras que en suReadAsAsync
método está pasandoIEnumerable<Foo>
que obviamente no son tipos compatibles.Install-Package Microsoft.AspNet.WebApi.Client
fuente
Microsoft.AspNet.WebApi.Client
NuGet. Esto descargará la última versión de Internet y hará referencia al ensamblado en su aplicación de consola. Eso es exactamente lo que hace la plantilla de proyecto ASP.NET MVC y es la razón por la que no necesita instalar nada para que funcione. Pero en su aplicación de consola no existe tal cosa.Install-Package Microsoft.AspNet.WebApi.Client
y pruebe el código.pruebe esta consola del administrador de paquetes
Install-Package System.Net.Http.Formatting.Extension -Version 5.2.3 y luego agregue usando agregar referencia.
fuente
Agregar una referencia a System.Net.Http.Formatting.dll puede causar problemas de desajuste de DLL. En este momento, System.Net.Http.Formatting.dll parece hacer referencia a la versión 4.5.0.0 de Newtonsoft.Json.DLL, mientras que la última versión es 6.0.0.0. Eso significa que también deberá agregar una redirección de enlace para evitar una excepción de ensamblado .NET si hace referencia al último paquete o DLL de Newtonsoft NuGet:
Entonces, una solución alternativa para agregar una referencia a System.Net.Http.Formatting.dll es leer la respuesta como una cadena y luego desearalizar usted mismo con JsonConvert.DeserializeObject (responseAsString). El método completo sería:
fuente
o si tiene VS 2012, puede ir a la consola del administrador de paquetes y escribir Install-Package Microsoft.AspNet.WebApi.Client
Esto descargaría la última versión del paquete.
fuente
USE esta referencia de ensamblaje en su proyecto
fuente