在执行下一个方法之前如何强制结果?

时间:2019-02-14 21:51:21

标签: c# .net asp.net-core async-await azure-functions

我们如何强制执行ReadAsStringAsync(?

在我的azure函数中,我awaiting是请求的主体:

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

,然后我立即将body用于下一个方法:

            var hasRootNode = XmlValidator.HasRootNode(body);

这是HasRootNode的定义:

public static bool HasRootNode(string xml)

在调用HasRootNode方法之前,似乎没有读取整个字符串。

我们如何强制执行ReadAsStringAsync(?

1 个答案:

答案 0 :(得分:1)

如建议的那样,ReadAsStringAsync()“吃掉数据”,内容被作为流处理,并且由于消息格式化程序已使用了数据,因此流的位置已经在末尾。

要使用ReadAsStringAsync(),首先需要将内容流Position重置为开头。

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