多次调用HttpContent的ReadAsAsync方法
- 论坛
- 多次调用HttpContent的ReadAsAsync方法
10 浏览
多次调用HttpContent的ReadAsAsync方法
使用Web API 2.2,假设我想两次从HttpContent
中读取,每次都是不同的类型。
await httpContent.LoadIntoBufferAsync(); //需要将内容缓冲以进行多次读取 var X = await httpContent.ReadAsAsync(); //以第一个类型读取 var Y = await httpContent.ReadAsAsync >(); //以第二个类型读取
当我运行上面的代码时,X
是T
的非空实例,而Y
是空的。如果我改变顺序,Y
将是一个非空字典,而X
将是空的。换句话说,对ReadAsAsync
的第二次及后续调用将始终返回空,除非它们使用相同的泛型类型参数进行调用。独立地,对ReadAsAsync
的任何调用都按预期工作(即使不必要地调用LoadIntoBufferAsync
)。
这对我来说是意外的 - 看起来我应该能够随意多次读取缓冲的内容为不同的类型。如果我添加另一行:
var Z = await httpContent.ReadAsString();
结果是,无论对X,Y,Z
的赋值顺序如何,Z
都将是一个非空字符串。
那么为什么会发生这种情况,为什么我不能使用ReadAsAsync
从HttpContent
中读取多种类型的内容?