我有 azure 函数,它接受巨大的 bson 对象。它绑定到 http 请求,然后尝试使用带有以下代码的流反序列化它:using (var stream = new MemoryStream()){ await request.Content.CopyToAsync(stream); using (var reader = new BsonDataReader(stream)) { var serializer = new JsonSerializer(); var readings = serializer.Deserialize<IEnumerable<ProviderReading>>(reader); }}readings 对象始终为空。我使用标准ReadAsAsync方法对其进行了测试:var test = await request.Content.ReadAsAsync<List<ProviderReading>>(new[]{new BsonMediaTypeFormatter()});在这种情况下,它会正确反序列化读数集合。有什么建议?
1 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
使用CopyTo
(或其async
变体)可以提高源和目标的位置。这意味着当您构造BsonDataReader
输入流时,输入流已经结束。
您应该重置流的位置:
stream.Position = 0;
- 1 回答
- 0 关注
- 133 浏览
添加回答
举报
0/150
提交
取消