Я пытаюсь (и не могу) получить фактическую строку JSON из объекта Request.HttpContent.
Вот что я делаю:
private async Task<string> GetRequestBodyAsString(HttpContent content)
{
string result;
using (var streamCopy = new MemoryStream())
{
await content.CopyToAsync(streamCopy);
streamCopy.Position = 0;
result = new StreamReader(streamCopy).ReadToEnd();
}
return result;
}
Моя проблема в том, что при выполнении этого кода я всегда получаю пустую строку - если я не использую точку останова на строке, которая устанавливаетпозиция streamCopy обнуляется, что заставляет меня думать, что код просто продолжает выполняться после запуска метода CopyToAsync.
Если я изменю его на:
using (var streamCopy = new MemoryStream())
{
do
{
count++;
await content.CopyToAsync(streamCopy);
} while (streamCopy.Length == 0);
streamCopy.Position = 0;
result = new StreamReader(streamCopy).ReadToEnd();
}
, он неизменно будет работать правильно (например, результат будет содержать JSON, но это пахнет ... фол.
Чтоя здесь не так делаю?