MongoDB - 'MongoDB.Bson.ObjectId' 的类型初始值设定项抛出异常
本文关键字:MongoDB 抛出异常 Bson ObjectId 类型 | 更新日期: 2023-09-27 18:32:33
我只是想知道是否有人见过这个异常?我正在使用 C# 驱动程序,并且已经在许多服务器上成功运行此代码。我们在一台特定的生产服务器上看到了这一点。
我第一次看到这是在第一次插入新集合时。在那之后,每次我为该集合调用 InsertBatch 时,它似乎都会发生。
在同一次运行中,我已成功在其他集合上成功调用 InsertBatch。
错误** 消息 = 'MongoDB.Bson.ObjectId' 的类型初始值设定项抛出异常。堆栈跟踪 = at MongoDB.Bson.ObjectId.GenerateNewId() at MongoDB.Bson.Serialization.IdGenerators.BsonObjectIdGenerator.GenerateId(Object container, Object document) at MongoDB.Driver.MongoCollection.InsertBatch(Type nominalType, IEnumerable documents, MongoInsertOptions options)
谢谢
保罗
检查你内心的异常。由于 Mongo 不实现 FIPS,并且在某些操作系统配置中是必需的,因此即使在尝试读取或生成 ObjectId 时禁用身份验证,您也可能会收到此错误(因为它们具有加密的 id 值)。若要解决此问题,请替换集合上加密的"_id"字段值,或修改 Windows 注册表以允许应用程序不实现 FIPS。
我今天在PHP上看到了同样的错误。发现这是一个已知问题(请参阅 https://jira.mongodb.org/browse/PHPC-460)。我知道这是 C#,但也许这是一个类似的问题。
BSonId 序列化很有趣,它在 2013 年从某人那里实现https://github.com/SharpRepository/SharpRepository/issues/56
就我而言,将 Asp.net Core 3.0降级到2.2已经奏效。
我认为mongodb.csharp驱动程序需要System.Runtime.Serialization.Formatters参考
在 3.0 版本
https://github.com/dotnet/core/issues/2611
更新将在2019年的第二次单独进行https://github.com/mongodb/mongo-csharp-driver/pull/372