From 25120f7df2c9fb441e5d46dca7781959c6156f52 Mon Sep 17 00:00:00 2001 From: Zhiyuan Liang Date: Tue, 16 Apr 2024 11:18:43 +0800 Subject: [PATCH] validate settings if no prebound settings --- .../Targeting/ContextualTargetingFilter.cs | 7 +++++++ 1 file changed, 7 insertions(+) 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)); } }