NSwag - Как читать содержимое ответа в методе ProcessResponse - PullRequest
0 голосов
/ 12 ноября 2018

Я создаю свой RestClient через NSwag. При выполнении запроса API в моем приложении содержимое ответа правильно читается сгенерированным кодом:

...
ProcessResponse(client_, response_);

var status_ = ((int)response_.StatusCode).ToString();
if (status_ == "200") {
    var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);

...

Однако иногда я хочу проанализировать ответ и действовать по-другому, прежде чем десериализовать контент в JSON. Я создал другой файл и реализовал частичный метод:

partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response)

Когда я пытаюсь прочитать содержимое ответа внутри метода ProcessResponse так же, как оно читается в сгенерированном классе,

await response_.Content.ReadAsStringAsync().ConfigureAwait(false)

мое приложение зависает бесконечно. Поскольку метод ProcessResponse не является асинхронным, я поместил вызов в

var contentString = Task.Run(async () => await response.Content.ReadAsStringAsync()).Result;

При попытке прочитать результат задания приложение зависает навсегда. В настоящее время я в полном недоумении:

  1. Почему «ReadAsStringAsync» работает в сгенерированном коде, но не внутри метода «ProcessResponse».
  2. Как я могу прочитать содержимое ответа внутри метода "ProcessResponse"?

Большое спасибо заранее, Hendryk

...