我正在尝试从我的web应用程序调用web API。我使用的是.Net 4.5,在编写代码时,我得到了一个错误:HttpClient
不包含定义PostAsJsonAsync
方法。
代码如下:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:51093/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var user = new Users();
user.AgentCode = 100;
user.Remarks = "Test";
user.CollectionDate = System.DateTime.Today;
user.RemittanceDate = System.DateTime.Today;
user.TotalAmount = 1000;
user.OrgBranchID = 101;
var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;
我收到了错误消息:
错误:“”System.Net.Http.HttpClient“”不包含“”PostAsJsonAsync“”的定义,并且找不到接受“”System.Net.Http.HttpClient“”类型的第一个参数的扩展方法“”PostAsJsonAsync“”(是否缺少using指令或程序集引用?)
请看一看,给我提个建议。
发布于 2013-10-03 19:59:25
是,您需要将引用添加到
System.Net.Http.Formatting.dll
这可以在扩展程序集区域中找到。
实现此目的的一个好方法是将NuGet package Microsoft.AspNet.WebApi.Client
添加到您的项目中。
发布于 2016-01-04 23:53:58
PostAsJsonAsync
不再位于System.Net.Http.dll
(.NET 4.5.2)中。您可以添加对System.Net.Http.Formatting.dll
的引用,但这实际上属于较旧的版本。我在我们的TeamCity build服务器上遇到了这个问题,这两者不能协同工作。
或者,您可以用PostAsync
调用替换PostAsJsonAsync
,这只是新dll的一部分。替换
var response = client.PostAsJsonAsync("api/AgentCollection", user).Result;
通过以下方式:
var response = client.PostAsync("api/AgentCollection", new StringContent(
new JavaScriptSerializer().Serialize(user), Encoding.UTF8, "application/json")).Result;
请注意,JavaScriptSerializer
位于名称空间System.Web.Script.Serialization
中。
您必须在csproj:System.Web.Extensions.dll
中添加一个程序集引用
请参阅https://code.msdn.microsoft.com/windowsapps/How-to-use-HttpClient-to-b9289836
发布于 2014-06-14 01:33:21
缺少的引用是System.Net.Http.Formatting.dll
。但更好的解决方案是添加NuGet包Microsoft.AspNet.WebApi.Client
,以确保格式化dll的版本与我的项目中的System.Net.Http
的.NET框架版本一起工作。
https://stackoverflow.com/questions/19158378
复制相似问题