我们如何强制执行ReadAsStringAsync(?
在我的azure函数中,我awaiting
是请求的主体:
var body = await req.Content.ReadAsStringAsync();
,然后我立即将body
用于下一个方法:
var hasRootNode = XmlValidator.HasRootNode(body);
这是HasRootNode
的定义:
public static bool HasRootNode(string xml)
在调用HasRootNode
方法之前,似乎没有读取整个字符串。
我们如何强制执行ReadAsStringAsync(?
答案 0 :(得分:1)
如建议的那样,ReadAsStringAsync()“吃掉数据”,内容被作为流处理,并且由于消息格式化程序已使用了数据,因此流的位置已经在末尾。
要使用ReadAsStringAsync(),首先需要将内容流Position重置为开头。
XmlValidator.HasRootNode(new System.IO.StreamReader(req.Content.ReadAsStreamAsync().GetAwaiter().GetResult()).ReadToEnd());