HttpClient不支持PostAsJsonAsync方法C#

20 浏览
0 Comments

HttpClient不支持PostAsJsonAsync方法C#

我正在尝试从我的Web应用程序中调用一个Web API。我正在使用.Net 4.5,在编写代码时遇到错误HttpClient不包含定义PostAsJsonAsync方法。\n以下是代码:\n

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;

\n我收到以下错误消息:\n

\n错误:\'System.Net.Http.HttpClient\'不包含定义为\'PostAsJsonAsync\'的方法,也找不到接受第一个参数为\'System.Net.Http.HttpClient\'类型的\'PostAsJsonAsync\'扩展方法(是否缺少using指令或程序集引用?)\n

\n请查看并给我建议。

0
0 Comments

问题出现的原因是缺少System.Net.Http.Formatting.dll引用。解决方法是添加NuGet包Microsoft.AspNet.WebApi.Client,以确保格式化dll的版本与项目中的System.Net.Http的.NET框架版本兼容。

0
0 Comments

问题:为什么HttpClient不支持PostAsJsonAsync方法?

原因和解决方法如下:

原因:在.NET 4.5.2中,PostAsJsonAsync方法不再存在于System.Net.Http.dll中。虽然可以添加对System.Net.Http.Formatting.dll的引用,但这实际上是一个旧版本的引用。在我们的TeamCity构建服务器上,我遇到了这两个不兼容的问题。

解决方法:可以用PostAsync方法替换PostAsJsonAsync方法。使用以下代码进行替换:

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的引用。

这个解决方法是目前最佳的选择。不要尝试添加NuGet包或DLL。

另外,值得一提的是,使用await FooAsync()代替FooAsync().Result,后者可能会导致死锁的情况发生。

通过上述解决方法,可以解决HttpClient不支持PostAsJsonAsync方法的问题,并保持最佳实践。

0
0 Comments

问题:为什么HttpClient不支持PostAsJsonAsync方法?

原因:在使用HttpClient的PostAsJsonAsync方法时,出现了缺少引用的错误。具体而言,缺少了对System.Net.Http.Formatting.dll和Newtonsoft.Json的引用。

解决方法:为了解决该问题,需要进行以下步骤:

1. 添加对System.Net.Http.Formatting.dll的引用。可以在扩展程序集区域找到该文件。

2. 添加Microsoft.AspNet.WebApi.Client的NuGet包到项目中。可以通过NuGet包管理器来完成。

3. 解决"Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified."错误。可以在NuGet中搜索Json.NET进行下载,或者从james.newtonking.com/json进行下载。

4. 检查并下载所需的依赖项。在NuGet中搜索Json.NET或者从james.newtonking.com/json进行下载。

5. 添加NuGet包"Microsoft.AspNet.WebApi.Client",以确保格式化dll的版本与项目中的".NET Framework"版本的"System.Net.Http"兼容。

6. 如果遇到无法解决依赖项的编译问题,可以考虑自行编写代码,或者感谢微软和其他开发者为我们提供了免费使用的代码。

7. 对于UWP应用程序,可以尝试使用"System.Net.Http.Formatting.Extension"方法。

8. 对于.NET Framework 4,可以使用以下命令将其添加到项目中:PM> Install-Package System.Net.Http.Formatting。

9. 在使用Visual Studio 2017和.NET Framework 4.7时,添加System.Net.Http.Formatting.Extension NuGet包可能会导致HttpClient出错。需要找出根本原因,并进行修复。

要解决HttpClient不支持PostAsJsonAsync方法的问题,需要添加对System.Net.Http.Formatting.dll和Newtonsoft.Json的引用,并根据具体情况下载所需的依赖项。

0