Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用HttpContentExtensions.ReadAsAsync<;T>;()?_C#_Asp.net_Asp.net Web Api - Fatal编程技术网

C# 如何使用HttpContentExtensions.ReadAsAsync<;T>;()?

C# 如何使用HttpContentExtensions.ReadAsAsync<;T>;()?,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我正在尝试在VS2013(.net 4.5.1)中执行一次编译,结果出现以下行的编译错误: Product product = await response.Content.ReadAsAsync<Product>(); response = await client.PostAsJsonAsync("api/products", gizmo); 我引用了System.Net.Http,其中包含三个无法编译的方法:ReadAsAsync()、PostAsJsonAsync()和Pu

我正在尝试在VS2013(.net 4.5.1)中执行一次编译,结果出现以下行的编译错误:

Product product = await response.Content.ReadAsAsync<Product>();
response = await client.PostAsJsonAsync("api/products", gizmo);
我引用了System.Net.Http,其中包含三个无法编译的方法:ReadAsAsync()、PostAsJsonAsync()和PutAsJsonAsync()。虽然extensions类没有出现在该程序集的ObjectBrowser中,所以我不确信我有正确的版本(版本是4.0.30319.18402)

我使用的是最新的nuGet Microsoft.AspNet.WebApi.Client包(5.1.2),所以我想我已经具备了所需的一切

有人知道为什么代码无法编译,或者我遗漏了什么吗

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

namespace WebApiClient
{
class Program
{
    static void Main()
    {
        RunAsync().Wait();
    }
    static async Task RunAsync()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:54122/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            // HTTP GET
            HttpResponseMessage response = await client.GetAsync("api/products/1");
            if (response.IsSuccessStatusCode)
            {
                //***********
                Product product = await response.Content.ReadAsAsync<Product>();
                //***********
                Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category);
            }

            // HTTP POST
            var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" };

            //***********
            response = await client.PostAsJsonAsync("api/products", gizmo);
            //***********
            if (response.IsSuccessStatusCode)
            {
                Uri gizmoUrl = response.Headers.Location;

                // HTTP PUT
                gizmo.Price = 80;   // Update price

                //***********
                response = await client.PutAsJsonAsync(gizmoUrl, gizmo);
                //***********

                // HTTP DELETE
                response = await client.DeleteAsync(gizmoUrl);
            }
        }
    }
}
}
使用系统;
使用System.Net.Http;
使用System.Net.Http.Header;
使用System.Threading.Tasks;
命名空间WebApiClient
{
班级计划
{
静态void Main()
{
RunAsync().Wait();
}
静态异步任务RunAsync()
{
使用(var client=new HttpClient())
{
client.BaseAddress=新Uri(“http://localhost:54122/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
//HTTP获取
httpresponsemessageresponse=wait client.GetAsync(“api/products/1”);
if(响应。IsSuccessStatusCode)
{
//***********
Product=wait response.Content.ReadAsAsync();
//***********
Console.WriteLine(“{0}\t${1}\t{2}”,product.Name,product.Price,product.Category);
}
//HTTP POST
var gizmo=new Product(){Name=“gizmo”,Price=100,Category=“Widget”};
//***********
response=wait client.postsjsonasync(“api/产品”,gizmo);
//***********
if(响应。IsSuccessStatusCode)
{
Uri gizmoUrl=response.Headers.Location;
//HTTP PUT
gizmo.Price=80;//更新价格
//***********
response=wait client.PutAsJsonAsync(gizmoUrl,gizmo);
//***********
//HTTP删除
response=wait client.deleteAync(gizmoUrl);
}
}
}
}
}

谢谢。

原来我需要一个对System.Net.Http.Formatting的引用


我觉得这是nuGet Microsoft.AspNet.WebApi.Client包的一部分。

你是说你安装了
Microsoft.AspNet.WebApi.Client
包,但没有将引用添加到你的项目中?是的,没错。它只有在我安装另一个NuGet软件包(WebAPIDoodle.Http)时才出现,我安装这个软件包纯粹是因为我认为它可以为我提供System.Net.Http.Formatting。我刚刚在VS 2013的一个全新控制台应用程序中再次尝试了它,它确实可以正常工作。我猜您可能意外地将客户端软件包安装到了另一个项目中。然而,如果你可以得到一个坚实的复制安装包,而没有得到参考,请打开一个错误为我们对。谢谢谢谢伊莎。我在空白溶液中试过,效果很好。必须是用户错误。再次感谢。可能的副本
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

namespace WebApiClient
{
class Program
{
    static void Main()
    {
        RunAsync().Wait();
    }
    static async Task RunAsync()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:54122/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            // HTTP GET
            HttpResponseMessage response = await client.GetAsync("api/products/1");
            if (response.IsSuccessStatusCode)
            {
                //***********
                Product product = await response.Content.ReadAsAsync<Product>();
                //***********
                Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category);
            }

            // HTTP POST
            var gizmo = new Product() { Name = "Gizmo", Price = 100, Category = "Widget" };

            //***********
            response = await client.PostAsJsonAsync("api/products", gizmo);
            //***********
            if (response.IsSuccessStatusCode)
            {
                Uri gizmoUrl = response.Headers.Location;

                // HTTP PUT
                gizmo.Price = 80;   // Update price

                //***********
                response = await client.PutAsJsonAsync(gizmoUrl, gizmo);
                //***********

                // HTTP DELETE
                response = await client.DeleteAsync(gizmoUrl);
            }
        }
    }
}
}