diff --git a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingContractResolver.cs b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingContractResolver.cs index 0f10652d8d..e6d03bf707 100644 --- a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingContractResolver.cs +++ b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AuditingContractResolver.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Concurrent; using System.Collections.Generic; using System.Reflection; using Newtonsoft.Json; @@ -36,13 +35,5 @@ namespace Volo.Abp.Auditing return property; } - - private static readonly ConcurrentDictionary, AuditingContractResolver> AuditingContractResolverdDictionary = new ConcurrentDictionary, AuditingContractResolver>(); - - public static AuditingContractResolver GetSharedAuditingContractResolver(List ignoredTypes) - { - return AuditingContractResolverdDictionary.GetOrAdd(ignoredTypes, - x => new AuditingContractResolver(ignoredTypes)); - } } } diff --git a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/JsonNetAuditSerializer.cs b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/JsonNetAuditSerializer.cs index 931cdbbfad..6da7ec5da2 100644 --- a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/JsonNetAuditSerializer.cs +++ b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/JsonNetAuditSerializer.cs @@ -1,3 +1,5 @@ +using System; +using System.Collections.Generic; using Microsoft.Extensions.Options; using Newtonsoft.Json; using Volo.Abp.DependencyInjection; @@ -18,10 +20,29 @@ namespace Volo.Abp.Auditing { var options = new JsonSerializerSettings { - ContractResolver = AuditingContractResolver.GetSharedAuditingContractResolver(Options.IgnoredTypes) + ContractResolver = GetSharedAuditingContractResolver(Options.IgnoredTypes) }; return JsonConvert.SerializeObject(obj, options); } + + private static readonly object SyncObj = new object(); + private static AuditingContractResolver _sharedAuditingContractResolver; + + public static AuditingContractResolver GetSharedAuditingContractResolver(List ignoredTypes) + { + if (_sharedAuditingContractResolver == null) + { + lock (SyncObj) + { + if (_sharedAuditingContractResolver == null) + { + _sharedAuditingContractResolver = new AuditingContractResolver(ignoredTypes); + } + } + } + + return _sharedAuditingContractResolver; + } } } \ No newline at end of file