Fiz um aplicativo de console para consumir uma API da Web que acabei de fazer. O código do aplicativo do console não é compilado. Isso me dá o erro de compilação:
'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?)
Aqui está um método de teste no qual esse erro ocorre.
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;
}
Usei esse método e o consumi de um cliente MVC.
asp.net
.net
asp.net-mvc
asp.net-web-api
Water Cooler v2
fonte
fonte
Certifique-se de ter instalado o
correct NuGet package
em seu aplicativo de console:e que você tem como alvo pelo menos o .NET 4.0.
Dito isso, sua
GetAllFoos
função é definida para retornar um,IEnumerable<Prospect>
enquanto em seuReadAsAsync
método você está transmitindoIEnumerable<Foo>
tipos que obviamente não são compatíveis.Install-Package Microsoft.AspNet.WebApi.Client
fonte
Microsoft.AspNet.WebApi.Client
NuGet. Isso fará o download da versão mais recente da Internet e fará referência ao assembly em seu aplicativo de console. Isso é exatamente o que o modelo de projeto ASP.NET MVC faz e é a razão pela qual você não precisa instalar nada para que ele funcione. Mas em seu aplicativo de console não existe tal coisa.Install-Package Microsoft.AspNet.WebApi.Client
e tente o código.experimente este console do gerenciador de pacotes
Install-Package System.Net.Http.Formatting.Extension -Version 5.2.3 e, em seguida, adicione usando adicionar referência.
fonte
Adicionar uma referência a System.Net.Http.Formatting.dll pode causar problemas de incompatibilidade de DLL. No momento, System.Net.Http.Formatting.dll parece fazer referência à versão 4.5.0.0 de Newtonsoft.Json.DLL, enquanto a versão mais recente é 6.0.0.0. Isso significa que você também precisará adicionar um redirecionamento de ligação para evitar uma exceção .NET Assembly se fizer referência ao pacote Newtonsoft NuGet ou DLL mais recente:
Portanto, uma solução alternativa para adicionar uma referência a System.Net.Http.Formatting.dll é ler a resposta como uma string e, em seguida, dessearalizar-se com JsonConvert.DeserializeObject (responseAsString). O método completo seria:
fonte
ou se você tiver o VS 2012, pode ir para o console do gerenciador de pacotes e digitar Install-Package Microsoft.AspNet.WebApi.Client
Isso faria o download da versão mais recente do pacote
fonte
USE Esta Referência de Montagem em seu Projeto
fonte