编译器找不到 PostAsJsonAsync 方法
Posted
技术标签:
【中文标题】编译器找不到 PostAsJsonAsync 方法【英文标题】:Compiler can't find PostAsJsonAsync method 【发布时间】:2016-05-04 18:00:02 【问题描述】:我正在构建一个调用 RESTful API Web 服务的 ASP.NET MVC 5 razor 应用程序。API 中的一个调用使用 POST 方法。我的代码中有这一行:
var response = httpClient.PostAsJsonAsync("/api/account/AddUserAccount", item).Result;
现在,我能够构建该行而不会显示任何错误,但是当我构建应用程序时,我得到了
“HttpClient”不包含“PostAsJsonAsync”的定义,并且找不到接受“HttpClient”类型的第一个参数的扩展方法“PostAsJsonAsync”
我已经对错误进行了搜索,并在 Stack Overflow 上找到了帖子,上面写着要添加对 System.Net.Http.Formatting.dll 的引用,但我在我的系统上找不到该 DLL。如何解决此错误?
【问题讨论】:
你的意思是System.Net.Http.Formatting? 我安装了它,但它没有解决问题。现在我收到有关无法解析 System.Net.Http 和项目 TestAccountService 中的依赖 System.Net.Http.Formatting.Extension 5.2.3 不支持框架 DNXCore,Version=v5.0 的消息。 如果您使用的是 DNX,那么您不能使用 PostAsJsonAsync 方法。请尝试以下操作:var response = await client.PostAsync("api/values", new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(item);, Encoding.UTF8,"application/json"));
我能够得到您的第二个编译建议。谢谢。如果你把它作为一个答案,我会给你功劳。
@TonyVitabile - 我只是将所有 cmets 总结为答案。
【参考方案1】:
如果您要使用PostAsJsonAsync
方法,那么您需要使用以下NuGet Package。
但是,如果您使用的是 DNX,它将无法工作,因为它不支持 DNX(还没有?)。
在这种情况下,您可以执行以下操作:
var response = await client.PostAsync("api/values", new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(item);, Encoding.UTF8,"application/json"));
这应该会有所帮助。
【讨论】:
【参考方案2】:您缺少 using 语句。
using System.Net.Http; /* probably this one */
using System.Net.Http.Headers;
当然,using 语句不好,除非你有 System.Net.Http.Formatting(.dll) 引用(正如您在搜索中发现的那样)
这个 dll 来自一个 nuget 包!
Microsoft.AspNet.WebApi.Client
最新链接:
https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Client/
我在这里的版本(我在其中找到了那个 .dll 的副本)
https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Client/4.0.20710
【讨论】:
我在“添加引用”对话框中看到的唯一 DLL 是 System.Net.dll 和 System.Net.Http.dll;我没有看到 System.Net.Http.Formatting.dll以上是关于编译器找不到 PostAsJsonAsync 方法的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core 中的 PostAsJsonAsync 方法在哪里?
C#程序在VS编译器加载时出现找不到方法,无法显示该程序窗体设计器