将HttpClient .NET 4.5的代码降级为.NET 4.0

Dev*_*per 6 c# httpclient .net-4.0 async-await .net-4.5

我有这个代码在.NET 4.5中运行良好.

var handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;
handler.PreAuthenticate = true;
handler.ClientCertificateOptions = ClientCertificateOption.Automatic;

var client = new HttpClient(handler);
client.BaseAddress = new Uri("http://localhost:22678/");
client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));

var loginBindingModel = new LoginBindingModel { Password = "test01", UserName = "test01" };

var response = await client.PostAsJsonAsync("api/Account/Login", loginBindingModel);
                response.EnsureSuccessStatusCode(); // Throw on error code.
                tokenModel = await response.Content.ReadAsAsync<TokenModel>();
Run Code Online (Sandbox Code Playgroud)

现在我必须在.NET 4.0中做同样的事情.

但我面临两个问题,我不知道如何解决它们.

  1. 在.NET 4.0中.方法client.PostAsJsonAsync不存在.
  2. 现有的方法是client.PostAsync它需要的HttpContext.

在此输入图像描述

我在WPF客户端内请求...伙计们,我不知道我能做些什么来存档相同的功能......

请帮忙!

Won*_*ird 8

建议使用BCL/async /"Microsoft HTTP Client Libraries"帮助程序项目"补充".Net 4.0与.Net 4.5具有相同的功能(可以在NuGet包管理器中找到最新版本.)有关详细信息,请参阅以下链接: http://www.nuget.org/packages/microsoft.bcl.async (注意:您可以通过相同的基本机制获得对http客户端的支持)

  • 我相信我们正在使用"Microsoft HTTP Client Libraries"Microsoft.Net.Http ver 2.2.18(通过NuGet),以便从应用程序定位.net 4.0使用client.PostAsJsonAsync (2认同)
  • 我只是仔细检查了我们的解决方案中的一个目标.Net 4.0并调用client.PostAsJsonAsync()看起来它是通过扩展方法处理的.我怀疑你可能需要在进行调用的模块中使用System.Net.Http.Formatting.(您使用的是VS 2010 - 其中一个说明表示VS2010不受支持.) (2认同)
  • 通过NuGet将"Microsoft HTTP Client Libraries"添加到您的项目后,只需确保"使用System.Net.Http;" 和"使用System.Net.Http.Formatting;" 位于源模块的顶部,其中包含client.PostAsJsonAsync()调用.(如果你还没看到,请给我发电子邮件) (2认同)