You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BsonBinaryWriter的WriteInt32报错:仅能在Name状态调用WriteName

解决BsonBinaryWriter写入int时的"WriteName can only be called when State is Name, not when State is Initial"异常

这个报错的核心原因是BsonBinaryWriter有严格的状态流转规则:初始状态(Initial)下无法直接写入带键名的字段,必须先开启一个BSON文档,让writer进入可处理键值对的状态。

修正后的代码如下:

using MongoDB.Bson;
using MongoDB.Bson.IO;
using System.IO;

// 创建写入器及流
using var stream = new MemoryStream();
using var writer = new BsonBinaryWriter(stream);

// 启动根文档,切换writer状态至可写入键值对
writer.WriteStartDocument();
// 此时可正常写入带键名的int字段
writer.WriteInt32("t", 1);
// 结束文档,保证BSON结构完整
writer.WriteEndDocument();

关键操作说明:

  • WriteStartDocument():将writer从Initial状态切换到Document状态,解锁键值对写入权限
  • WriteEndDocument():收尾BSON文档结构,避免后续解析或处理时出现格式错误

内容的提问来源于stack exchange,提问作者QQQQq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:10:35