使用 Audit.Net.MongoDB 时的问题
Posted
技术标签:
【中文标题】使用 Audit.Net.MongoDB 时的问题【英文标题】:Issue while using Audit.Net.MongoDB 【发布时间】:2020-08-14 09:33:50 【问题描述】:我正在使用 Audit.Net 包来审核我的应用程序的要求。 https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.NET.MongoDB#auditnetmongodb
当我尝试使用 AuditScope.Create 方法时,我遇到了 JSON 序列化异常。附件是我得到的例外。我错过了什么?
下面是 UserProfiles 类:
public class UserProfiles
[BsonId]
public ObjectId Id get; set;
public int UserId get; set;
[BsonRequired]
public string UserName get; set;
[BsonRequired]
public string Password get; set;
public string Role get; set;
[BsonRequired]
public string Email get; set;
[BsonRequired]
public string ProjectId get; set;
Startup.cs 文件:下面是使用的代码:
public Startup(IConfiguration configuration)
Configuration = configuration;
Audit.Core.Configuration.DataProvider = new Audit.MongoDB.Providers.MongoDataProvider()
ConnectionString = "mongodb://localhost:27017",
Database = "Audit",
Collection = "Event"
;
我也尝试将 dataprovider 配置移至 ConfigureServices 方法。我犯了同样的错误。我有什么遗漏吗?
谢谢, 瓦尼
【问题讨论】:
你能分享UserProfiles
类代码吗?您是否将任何属性声明为ObjectId
?
还想知道this 是否可以解决您的问题(创建JsonConverter
并覆盖MongoDataProvider.JsonSerializerSettings
属性)
@thepirat000:是的 UserProfiles
类有 ObjectId
属性。
【参考方案1】:
问题是ObjectId
无法使用目标对象的默认序列化程序序列化/反序列化为 Json。
最新版本的Mongo Data Provider 包含一个设置SerializeAsBson
,您应该将其设置为true,这样您的目标对象就会被序列化为Bson 文档。
Audit.Core.Configuration.DataProvider = new Audit.MongoDB.Providers.MongoDataProvider()
ConnectionString = "mongodb://localhost:27017",
Database = "Audit",
Collection = "Event",
SerializeAsBson = true
;
【讨论】:
以上是关于使用 Audit.Net.MongoDB 时的问题的主要内容,如果未能解决你的问题,请参考以下文章