C# MongoDB 未序列化 System.Security.Claims.Claim
C# MongoDB not serializing System.Security.Claims.Claim
我似乎无法序列化 Claim
- 我做错了什么?使用此方法的其他对象序列化工作正常。
代码
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("TEST");
var collection = database.GetCollection<Claim>("Claims");
var payload = new Claim("name", "value");
collection.InsertOne(payload);
结果
一个对象被插入到 MongoDB 但除了 _id
没有其他对象被插入 set/populated.
使用 .NET Core 2.0.x 和 MongoDB.Driver 2.5.0.
更新 1
手动映射成员似乎可行;只是自动映射的时候好像失败了
BsonClassMap.RegisterClassMap<Claim>(cm =>
{
cm.SetIgnoreExtraElements(true);
cm.MapMember(c => c.Issuer);
cm.MapMember(c => c.OriginalIssuer);
cm.MapMember(c => c.Properties);
cm.MapMember(c => c.Subject);
cm.MapMember(c => c.Type);
cm.MapMember(c => c.Value);
cm.MapMember(c => c.ValueType);
cm.MapCreator(c => new Claim(c.Type, c.Value, c.ValueType, c.Issuer, c.OriginalIssuer, c.Subject));
});
Claim
class 必须手动映射,因为没有无参数构造函数和 public 设置器。
BsonClassMap.RegisterClassMap<Claim>(cm =>
{
cm.SetIgnoreExtraElements(true);
cm.MapMember(c => c.Issuer);
cm.MapMember(c => c.OriginalIssuer);
cm.MapMember(c => c.Properties);
cm.MapMember(c => c.Subject);
cm.MapMember(c => c.Type);
cm.MapMember(c => c.Value);
cm.MapMember(c => c.ValueType);
cm.MapCreator(c => new Claim(c.Type, c.Value, c.ValueType, c.Issuer, c.OriginalIssuer, c.Subject));
});
我似乎无法序列化 Claim
- 我做错了什么?使用此方法的其他对象序列化工作正常。
代码
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("TEST");
var collection = database.GetCollection<Claim>("Claims");
var payload = new Claim("name", "value");
collection.InsertOne(payload);
结果
一个对象被插入到 MongoDB 但除了 _id
没有其他对象被插入 set/populated.
使用 .NET Core 2.0.x 和 MongoDB.Driver 2.5.0.
更新 1
手动映射成员似乎可行;只是自动映射的时候好像失败了
BsonClassMap.RegisterClassMap<Claim>(cm =>
{
cm.SetIgnoreExtraElements(true);
cm.MapMember(c => c.Issuer);
cm.MapMember(c => c.OriginalIssuer);
cm.MapMember(c => c.Properties);
cm.MapMember(c => c.Subject);
cm.MapMember(c => c.Type);
cm.MapMember(c => c.Value);
cm.MapMember(c => c.ValueType);
cm.MapCreator(c => new Claim(c.Type, c.Value, c.ValueType, c.Issuer, c.OriginalIssuer, c.Subject));
});
Claim
class 必须手动映射,因为没有无参数构造函数和 public 设置器。
BsonClassMap.RegisterClassMap<Claim>(cm =>
{
cm.SetIgnoreExtraElements(true);
cm.MapMember(c => c.Issuer);
cm.MapMember(c => c.OriginalIssuer);
cm.MapMember(c => c.Properties);
cm.MapMember(c => c.Subject);
cm.MapMember(c => c.Type);
cm.MapMember(c => c.Value);
cm.MapMember(c => c.ValueType);
cm.MapCreator(c => new Claim(c.Type, c.Value, c.ValueType, c.Issuer, c.OriginalIssuer, c.Subject));
});