javascriptserializer генерирует циклическую ссылку при сериализации объекта модели в клиентском распознавателе automapper - PullRequest
0 голосов
/ 30 января 2020

Вот класс, в котором я пытаюсь связать мой сериализованный объект.

 public class RequestModel<T>:Event
    {
        public Guid Id { get; set; }
        public T Model{ get; set; }
        public string IpAddress { get; set; }
        public string EntityType => typeof(T).ToString();

        //public string EntityType => typeof(T).ToString();
        public UserDataViewModel UserData { get; set; }
        public string Url { get; set; }
        public DateTime LogDate { get; set; }
        public override Type RequestEntityType { get { return typeof(T); }}
        public string Action { get; set; }
        public RequestModel()
        {
            Id = Guid.NewGuid();
        }


    }

public class RequestModelMapper : Profile
    {
        public RequestModelMapper()
        {

            CreateMap(typeof(RequestModel<>), typeof(CreditCardLog))
                 .ForMember("CreatedDate", f => f.MapFrom("LogDate"))
                  .ForMember("LogID", f => f.MapFrom("Id"))
                   .ForMember("EntityType", f => f.MapFrom("EntityType"))
                    .ForMember("IPAddress", f => f.MapFrom("IpAddress"))
                     .ForMember("Action", f => f.MapFrom("Action"))
                  .ForMember("Data", opt => opt.ResolveUsing(new CustomResolver(), "Model"));

        }

        public class CustomResolver : IMemberValueResolver<object, object, object, string>
        {
            public string Resolve(object source, object destination, object sourceMember,string destinationMember, ResolutionContext context)
            {
                try
                {


                    var serializer = new JavaScriptSerializer() { MaxJsonLength = 86753090};

                    // Perform your serialization
                    var dataToSave= serializer.Serialize(sourceMember);

                    return dataToSave;
                }
                catch (Exception e)
                {

                    throw e;
                }

            }
        }
}

, но он продолжает выдавать исключение циклической ссылки, хотя я также установил настройку

 GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

в global.asax Application_Start ().

есть что-то, что я пропустил, это будет очень полезно. Заранее спасибо.

...