Как заставить результат до выполнения следующего метода? - PullRequest
0 голосов
/ 15 февраля 2019

Как заставить принудительно выполнить ReadAsStringAsync(?

Внутри моей лазурной функции я awaiting тело запроса:

            var body = await req.Content.ReadAsStringAsync();

и сразу после этого я использую body для следующего метода:

            var hasRootNode = XmlValidator.HasRootNode(body);

Это определение HasRootNode:

public static bool HasRootNode(string xml)

Кажется, что он НЕ читаетвся строка до вызова метода HasRootNode.

Как заставить принудительно выполнить ReadAsStringAsync(?

1 Ответ

0 голосов
/ 15 февраля 2019

ReadAsStringAsync () «ест данные», как было предложено, содержимое обрабатывается как поток, и, поскольку данные были использованы форматером сообщений, позиция потока уже в конце.

Чтобы использовать ReadAsStringAsync (), сначала необходимо сбросить позицию потока содержимого в начало.

 XmlValidator.HasRootNode(new System.IO.StreamReader(req.Content.ReadAsStreamAsync().GetAwaiter().GetResult()).ReadToEnd());
...