在 azure 函数中接收 bson 流

我有 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()});

在这种情况下,它会正确反序列化读数集合。


有什么建议?


POPMUISE
浏览 134回答 1
1回答

尚方宝剑之说

使用CopyTo(或其async变体)可以提高源和目标的位置。这意味着当您构造BsonDataReader输入流时,输入流已经结束。您应该重置流的位置:stream.Position&nbsp;=&nbsp;0;
打开App,查看更多内容
随时随地看视频慕课网APP