diff --git a/src/Microsoft.FeatureManagement/Targeting/ContextualTargetingFilter.cs b/src/Microsoft.FeatureManagement/Targeting/ContextualTargetingFilter.cs index e0d7fc7b..36e68d83 100644 --- a/src/Microsoft.FeatureManagement/Targeting/ContextualTargetingFilter.cs +++ b/src/Microsoft.FeatureManagement/Targeting/ContextualTargetingFilter.cs @@ -71,6 +71,13 @@ public Task EvaluateAsync(FeatureFilterEvaluationContext context, ITargeti // Check if prebound settings available, otherwise bind from parameters. TargetingFilterSettings settings = (TargetingFilterSettings)context.Settings ?? (TargetingFilterSettings)BindParameters(context.Parameters); + // + // If prebound settings is not available, which means BindParameters method is not called, we need to validate the feature filter settings. + if (context.Settings == null && !TargetingEvaluator.TryValidateSettings(settings, out string paramName, out string reason)) + { + throw new ArgumentException(reason, paramName); + } + return Task.FromResult(TargetingEvaluator.IsTargeted(targetingContext, settings, _options.IgnoreCase, context.FeatureName)); } }