2017-01-18 5 views
2

Пока я отправляю запрос остальным api, программа выйдет из строя, и Thread будет прерван. пожалуйста совет.Тема была прервана из-за проблемы в 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; 

 Смежные вопросы

  • Нет связанных вопросов^_^