Я создал консольное приложение для использования только что созданного веб-API. Код консольного приложения не компилируется. Это дает мне ошибку компиляции:
'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?)
Вот метод тестирования, в котором возникает эта ошибка.
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;
}
Я использовал этот метод и использовал его от клиента MVC.
asp.net
.net
asp.net-mvc
asp.net-web-api
Кулер для воды v2
источник
источник
Убедитесь, что вы установили
correct NuGet package
в своем консольном приложении:и что вы ориентируетесь как минимум на .NET 4.0.
При этом ваша
GetAllFoos
функция определена так, чтобы возвращатьIEnumerable<Prospect>
то, что в вашемReadAsAsync
методе вы передаете,IEnumerable<Foo>
которые, очевидно, не являются совместимыми типами.Install-Package Microsoft.AspNet.WebApi.Client
источник
Microsoft.AspNet.WebApi.Client
NuGet. Это загрузит последнюю версию из Интернета и укажет сборку в консольном приложении. Это именно то, что делает шаблон проекта ASP.NET MVC, и поэтому вам не нужно ничего устанавливать, чтобы он работал. Но в вашем консольном приложении такого нет.Install-Package Microsoft.AspNet.WebApi.Client
и попробуйте код.попробуйте эту консоль диспетчера пакетов
Install-Package System.Net.Http.Formatting.Extension -Version 5.2.3, а затем добавьте, используя ссылку добавления.
источник
Добавление ссылки на System.Net.Http.Formatting.dll может вызвать проблемы несоответствия DLL. Прямо сейчас System.Net.Http.Formatting.dll ссылается на версию 4.5.0.0 Newtonsoft.Json.DLL, тогда как последняя версия - 6.0.0.0. Это означает, что вам также необходимо добавить перенаправление привязки, чтобы избежать исключения .NET Assembly, если вы ссылаетесь на последний пакет Newtonsoft NuGet или DLL:
Таким образом, альтернативным решением для добавления ссылки на System.Net.Http.Formatting.dll является чтение ответа в виде строки, а затем десериализация с помощью JsonConvert.DeserializeObject (responseAsString). Полный метод будет:
источник
или если у вас есть VS 2012, вы можете перейти в консоль диспетчера пакетов и ввести Install-Package Microsoft.AspNet.WebApi.Client
Это загрузит последнюю версию пакета
источник
ИСПОЛЬЗУЙТЕ эту ссылку на сборку в своем проекте
источник