diff --git a/src/Exceptionless/Extensions/DataDictionaryExtensions.cs b/src/Exceptionless/Extensions/DataDictionaryExtensions.cs index 306deff4..772483ad 100644 --- a/src/Exceptionless/Extensions/DataDictionaryExtensions.cs +++ b/src/Exceptionless/Extensions/DataDictionaryExtensions.cs @@ -111,7 +111,7 @@ public static void AddObject(this IData data, ExtendedDataInfo info, Exceptionle int index = 1; while (data.Data.ContainsKey(name)) name = dataType.Name + index++; - } else if (name.AnyWildcardMatches(exclusions, true)) { + } else if (exclusions.Length > 0 && name.AnyWildcardMatches(exclusions, true)) { return; } diff --git a/src/Exceptionless/Serializer/DefaultJsonSerializer.cs b/src/Exceptionless/Serializer/DefaultJsonSerializer.cs index 909e681b..976f2a4a 100644 --- a/src/Exceptionless/Serializer/DefaultJsonSerializer.cs +++ b/src/Exceptionless/Serializer/DefaultJsonSerializer.cs @@ -47,11 +47,10 @@ public virtual string Serialize(object model, string[] exclusions = null, int ma if (maxDepth < 1) maxDepth = Int32.MaxValue; - var excludedPropertyNames = new HashSet(exclusions ?? new string[0], StringComparer.OrdinalIgnoreCase); using (var sw = new StringWriter()) { - using (var jw = new JsonTextWriterWithExclusions(sw, excludedPropertyNames)) { + using (var jw = new JsonTextWriterWithExclusions(sw, exclusions)) { jw.Formatting = Formatting.None; - Func include = (property, value) => ShouldSerialize(jw, property, value, maxDepth, excludedPropertyNames); + Func include = (property, value) => ShouldSerialize(jw, property, value, maxDepth, exclusions); var resolver = new ExceptionlessContractResolver(include); serializer.ContractResolver = resolver; if (continueOnSerializationError) @@ -71,9 +70,9 @@ public virtual object Deserialize(string json, Type type) { return JsonConvert.DeserializeObject(json, type, _serializerSettings); } - private bool ShouldSerialize(JsonTextWriterWithDepth jw, JsonProperty property, object obj, int maxDepth, ISet excludedPropertyNames) { + private bool ShouldSerialize(JsonTextWriterWithDepth jw, JsonProperty property, object obj, int maxDepth, string[] excludedPropertyNames) { try { - if (excludedPropertyNames != null && (property.UnderlyingName.AnyWildcardMatches(excludedPropertyNames, true) || property.PropertyName.AnyWildcardMatches(excludedPropertyNames, true))) + if (excludedPropertyNames != null && excludedPropertyNames.Length > 0 && (property.UnderlyingName.AnyWildcardMatches(excludedPropertyNames, ignoreCase: true) || property.PropertyName.AnyWildcardMatches(excludedPropertyNames, ignoreCase: true))) return false; bool isPrimitiveType = DefaultContractResolver.IsJsonPrimitiveType(property.PropertyType); diff --git a/src/Exceptionless/Serializer/JsonTextWriterWithExclusions.cs b/src/Exceptionless/Serializer/JsonTextWriterWithExclusions.cs index 2b093254..f1240bc0 100644 --- a/src/Exceptionless/Serializer/JsonTextWriterWithExclusions.cs +++ b/src/Exceptionless/Serializer/JsonTextWriterWithExclusions.cs @@ -5,15 +5,18 @@ namespace Exceptionless.Serializer { - internal class JsonTextWriterWithExclusions : JsonTextWriterWithDepth { - private readonly ISet _excludedPropertyNames; + internal sealed class JsonTextWriterWithExclusions : JsonTextWriterWithDepth { + private readonly string[] _excludedPropertyNames; - public JsonTextWriterWithExclusions(TextWriter textWriter, ISet excludedPropertyNames) : base(textWriter) { + public JsonTextWriterWithExclusions(TextWriter textWriter, string[] excludedPropertyNames) : base(textWriter) { _excludedPropertyNames = excludedPropertyNames; } public override bool ShouldWriteProperty(string name) { - return !name.AnyWildcardMatches(_excludedPropertyNames, true); + var exclusions = _excludedPropertyNames; + return exclusions is null || + exclusions.Length == 0 || + !name.AnyWildcardMatches(exclusions, ignoreCase: true); } } } \ No newline at end of file