2017-01-18 5 views
2

残りのAPIにリクエストをポストしている間、プログラムがクラッシュし、スレッドが中止されます。 アドバイスをお願いします。スレッドがhttpClient.PostAsyncで打ち切られました

public async Task<TResponse> Post<TRequest, TResponse>(string method, TRequest request) 
    { 
      JsonMediaTypeFormatter jsonFormat = new JsonMediaTypeFormatter 
      { 
       SerializerSettings = 
       { 
        ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore, 
        NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore, 
        PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None 
       } 
      }; 

      var response = await _httpClient.PostAsync(_baseUrl + method, request, jsonFormat); 
      var finalResponse = await response.Content.ReadAsAsync<TResponse>(); 

      return finalResponse; 
    } 

リクエストはサーバーに送信されません。 _httpClientは私が自分でそれを把握している

 _httpClient = 
      new HttpClient(new HttpClientHandler 
       { 
        AutomaticDecompression = 
         System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate 
       }) 
       {Timeout = TimeSpan.FromSeconds(50)}; 
     _httpClient.DefaultRequestHeaders.Add("Authorization", "apikey " + apiKey); 

答えて

2

以下のように定義される方法により、PostAsyncは、現在のスレッドをキャンセルする他のいくつかのメソッドを呼び出すことが判明。だから私はawaitキーワードを削除し、最終結果を得る。

var response = _httpClient.PostAsync(_baseUrl + method, request, jsonFormat).Result; 
関連する問題