我正在做一个集成项目。将实体插入 mongodb 时出现错误。
错误消息返回以下字符串:
MongoDB.Bson.BsonSerializationException:'序列化 Order 类的 OrderData 属性时发生错误:类型 MarketplaceOrder 未配置为此 ObjectSerializer 实例的允许类型。'
之前的几个步骤,我从任何 api 资源获取数据并将数据转换为我的通用对象
<T>
,如下所示。
var data = (JArray)returnDataFromNetwork.Data;
var order = data.ToObject<T>()
我在将实体插入到 mongodb 时出现错误
_orderRepository.InsertAsync(new Order
{
OrderData = order,
});
public class Order
{
public object OrderData { get; set; }
}
public class MarketplaceOrder
{
[JsonProperty("marketplace")]
public string Marketplace { get; set; }
[JsonProperty("account_id")]
public int AccountId { get; set; }
}
感谢您的支持,
我试图解释的所有事情都在“hangfire”(后台服务)项目上。首先,我在服务器控制台上收到此错误消息。然后我尝试在本地调试以了解问题出在哪里。我无法理解错误消息的详细信息。
我认为你使用 2.19 .net 驱动程序。请参阅发布 notes 以及您的问题的描述。
ObjectSerializer 已更改为仅允许对被认为安全的类型进行反序列化。 哪些类型被认为是安全的由一个新的可配置的 AllowedTypes 函数(Func
类型)决定。 默认的 AllowedTypes 函数是 ObjectSerializer.DefaultAllowedTypes ,它为许多我们认为安全的知名框架类型返回 true。 一个典型的例子可能是允许所有默认允许的类型以及您自己的类型。这可以通过以下方式完成:
解决方法:
var objectSerializer = new ObjectSerializer(type => ObjectSerializer.DefaultAllowedTypes(type) || type.FullName.StartsWith("MyNamespace")); BsonSerializer.RegisterSerializer(objectSerializer);