C# 创建HttpClient帮助程序方法时出现问题

C# 创建HttpClient帮助程序方法时出现问题,c#,dotnet-httpclient,C#,Dotnet Httpclient,我有一个调用web服务的正常运行的异步任务: private async Task GetResult() { using (var client = new HttpClient()) { client.BaseAddress = new Uri(_baseAddress); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(

我有一个调用web服务的正常运行的异步任务:

private async Task GetResult()
{
   using (var client = new HttpClient())
   {
      client.BaseAddress = new Uri(_baseAddress);
      client.DefaultRequestHeaders.Accept.Clear();
      client.DefaultRequestHeaders.Accept.Add(
         new MediaTypeWithQualityHeaderValue("application/json"));
      client.DefaultRequestHeaders.Add("Username", _username);
      client.DefaultRequestHeaders.Add("Action", "GET");
      /* etc */
      var response = await client.GetAsync(client.BaseAddress);
   }
}
我想将HttpClient对象的创建分开,以便可以对其进行参数化和重用:

private async Task GetResult()
{
   using (var client = GetClient(_baseAddress, _username))
   {
      var response = await client.GetAsync(client.BaseAddress);
   }
}
private static HttpClient GetClient(string Address, string Username)
{
   using (var client = new HttpClient())
   {
      client.BaseAddress = new Uri(Address);
      client.DefaultRequestHeaders.Accept.Clear();
      client.DefaultRequestHeaders.Accept.Add(
         new MediaTypeWithQualityHeaderValue("application/json"));
      client.DefaultRequestHeaders.Add("Username", Username);
      client.DefaultRequestHeaders.Add("Action", "GET");
      /* etc */
      return client;
   }
}
虽然这在功能上与我相同,但后者抛出一个带有内部异常的
aggregateeexception
错误

无法访问已释放的对象。对象名称:“System.Net.Http.HttpClient”


也许有一些我不理解的异步微妙之处?

使用
GetClient
内部的
摆脱
。您仅使用
使用
对仍然“属于您的所有权”的东西,当您
返回客户端时,您是在“将所有权放弃给调用方”

现在,调用方可以使用
using
语句(您已经在
GetResult
中正确地执行了该语句)


这与asnyc无关,只是标准的
IDisposable
行为。

太简单了,算了吧!我更新了标题以澄清问题-请随意回滚。看起来不错。我想不出正确的措辞。