Проблема при использовании Audit.Net.MongoDB

Я использую пакет Audit.Net для аудита требований к моему приложению. https://github.com/thepirat000/Audit.NET/tree/master/src/Audit.NET.MongoDB#auditnetmongodb

Я сталкиваюсь с исключением сериализации JSON, когда пытаюсь использовать метод AuditScope.Create. Прилагается исключение, которое я получаю. Что мне не хватает?

Ниже представлен класс 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"
            };
        }

Я также попытался перенести конфигурацию поставщика данных в метод ConfigureServices. Я получаю ту же ошибку. Что-то я пропустил?

Спасибо, Вани


person Vani Kulkarni    schedule 30.04.2020    source источник
comment
Не могли бы вы поделиться кодом класса UserProfiles? Вы объявляете какую-либо собственность как ObjectId?   -  person thepirat000    schedule 30.04.2020
comment
Также интересно, решает ли это вашу проблему (создание JsonConverter и переопределение свойства MongoDataProvider.JsonSerializerSettings)   -  person thepirat000    schedule 30.04.2020
comment
@ thepirat000: Да, класс UserProfiles имеет свойство ObjectId.   -  person Vani Kulkarni    schedule 01.05.2020


Ответы (1)


Проблема в том, что ObjectId нельзя сериализовать/десериализовать в Json, используя сериализатор по умолчанию для целевого объекта.

Последняя версия поставщика данных Mongo включает настройку SerializeAsBson вы должны установить значение true, поэтому ваш целевой объект сериализуется как документ Bson.

Audit.Core.Configuration.DataProvider = new Audit.MongoDB.Providers.MongoDataProvider()
{
    ConnectionString = "mongodb://localhost:27017",
    Database = "Audit",
    Collection = "Event",
    SerializeAsBson = true
};
person thepirat000    schedule 17.09.2020