Saya membuat aplikasi konsol untuk menggunakan API Web yang baru saja saya buat. Kode aplikasi konsol tidak dikompilasi. Ini memberi saya kesalahan kompilasi:
'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?)
Berikut adalah metode pengujian di mana kesalahan ini terjadi.
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;
}
Saya telah menggunakan metode ini dan mengkonsumsinya dari klien MVC.
asp.net
.net
asp.net-mvc
asp.net-web-api
Pendingin Air v2.0
sumber
sumber
Pastikan Anda telah menginstal
correct NuGet package
aplikasi konsol Anda:dan Anda menargetkan setidaknya .NET 4.0.
Ini dikatakan,
GetAllFoos
fungsi Anda didefinisikan untuk mengembalikanIEnumerable<Prospect>
sedangkan dalamReadAsAsync
metode Anda, Anda meneruskanIEnumerable<Foo>
yang jelas bukan tipe yang kompatibel.Install-Package Microsoft.AspNet.WebApi.Client
sumber
Microsoft.AspNet.WebApi.Client
NuGet. Ini akan mengunduh versi terbaru dari internet dan mereferensikan perakitan di aplikasi konsol Anda. Itulah yang dilakukan template proyek ASP.NET MVC dan merupakan alasan mengapa Anda tidak perlu menginstal apa pun agar dapat berfungsi. Tetapi dalam aplikasi konsol Anda tidak ada hal seperti itu.Install-Package Microsoft.AspNet.WebApi.Client
dan coba kodenya.coba Instal-Package System.Net.Http.Formatting.Extension -Version 5.2.3 konsol
Package manager ini dan kemudian tambahkan dengan menggunakan add reference.
sumber
Menambahkan referensi ke System.Net.Http.Formatting.dll dapat menyebabkan masalah ketidakcocokan DLL. Saat ini, System.Net.Http.Formatting.dll tampaknya mereferensikan Newtonsoft.Json.DLL versi 4.5.0.0, sedangkan versi terbaru adalah 6.0.0.0. Itu berarti Anda juga harus menambahkan pengalihan binding untuk menghindari pengecualian Majelis .NET jika Anda mereferensikan paket atau DLL Newtonsoft NuGet terbaru:
Jadi solusi alternatif untuk menambahkan referensi ke System.Net.Http.Formatting.dll adalah membaca respons sebagai string dan kemudian desearalize diri Anda dengan JsonConvert.DeserializeObject (responseAsString). Metode lengkapnya adalah:
sumber
atau jika Anda memiliki VS 2012 Anda dapat pergi ke konsol manajer paket dan ketik Install-Package Microsoft.AspNet.WebApi.Client
Ini akan mengunduh versi terbaru dari paket tersebut
sumber
GUNAKAN Referensi Majelis ini dalam Proyek Anda
sumber