为了账号安全,请及时绑定邮箱和手机立即绑定

在 azure 函数中接收 bson 流

在 azure 函数中接收 bson 流

C#
POPMUISE 2021-10-09 16:25:47
我有 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;


查看完整回答
反对 回复 2021-10-09
  • 1 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信