Я создаю свой 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;
При попытке прочитать результат задания приложение зависает навсегда. В настоящее время я в полном недоумении:
- Почему «ReadAsStringAsync» работает в сгенерированном коде, но не внутри метода «ProcessResponse».
- Как я могу прочитать содержимое ответа внутри метода "ProcessResponse"?
Большое спасибо заранее,
Hendryk