diff --git a/Directory.Packages.props b/Directory.Packages.props index f37bd594e4c..8d1be8d06bb 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -19,6 +19,7 @@ + diff --git a/eng/Versions.props b/eng/Versions.props index 9c269f28cfe..fdfd3488d86 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -86,6 +86,7 @@ $(MicrosoftExtensionsLogging80Version) $(MicrosoftExtensionsLoggingAbstractions80Version) $(MicrosoftExtensionsLoggingConsole80Version) + $(MicrosoftExtensionsOptions80Version) $(SystemTextJson80Version) @@ -95,6 +96,7 @@ $(MicrosoftExtensionsLogging90Version) $(MicrosoftExtensionsLoggingAbstractions90Version) $(MicrosoftExtensionsLoggingConsole90Version) + $(MicrosoftExtensionsOptions90Version) $(SystemTextJson90Version) $(MicrosoftAspNetCoreApp90Version) @@ -105,6 +107,7 @@ $(MicrosoftNETCoreApp100Version) $(MicrosoftNETCoreApp100Version) $(MicrosoftNETCoreApp100Version) + $(MicrosoftNETCoreApp100Version) $(MicrosoftNETCoreApp100Version) $(MicrosoftAspNetCoreApp100Version) diff --git a/eng/dependabot/net8.0/Packages.props b/eng/dependabot/net8.0/Packages.props index 039efe2cfb3..fc6c4e5c1e0 100644 --- a/eng/dependabot/net8.0/Packages.props +++ b/eng/dependabot/net8.0/Packages.props @@ -7,6 +7,7 @@ + 8.0.1 + + 8.0.2 8.0.15 diff --git a/eng/dependabot/net9.0/Versions.props b/eng/dependabot/net9.0/Versions.props index 8a7dfb77b34..5fc5de53c00 100644 --- a/eng/dependabot/net9.0/Versions.props +++ b/eng/dependabot/net9.0/Versions.props @@ -9,6 +9,8 @@ 9.0.4 9.0.4 + + 9.0.4 9.0.4 diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets index b75f72b30b1..8a8355ce625 100644 --- a/src/Directory.Build.targets +++ b/src/Directory.Build.targets @@ -126,4 +126,14 @@ + + + + + + + diff --git a/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs b/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs index 1136a5e4b3c..a00d0c0d30e 100644 --- a/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs +++ b/src/Microsoft.Diagnostics.Monitoring.Extension.Common/EgressHelper.cs @@ -190,7 +190,6 @@ private static ServiceCollection CreateServices(ExtensionEgressPayload .Build() .Bind(options); }); - services.AddSingleton, DataAnnotationValidateOptions>(); services.AddSingleton(new EgressProperties(payload.Properties)); diff --git a/src/Microsoft.Diagnostics.Monitoring.Extension.Common/Microsoft.Diagnostics.Monitoring.Extension.Common.csproj b/src/Microsoft.Diagnostics.Monitoring.Extension.Common/Microsoft.Diagnostics.Monitoring.Extension.Common.csproj index 8879d6f8eb6..8c5c54fd3a7 100644 --- a/src/Microsoft.Diagnostics.Monitoring.Extension.Common/Microsoft.Diagnostics.Monitoring.Extension.Common.csproj +++ b/src/Microsoft.Diagnostics.Monitoring.Extension.Common/Microsoft.Diagnostics.Monitoring.Extension.Common.csproj @@ -9,10 +9,6 @@ true - - - - diff --git a/src/Microsoft.Diagnostics.Monitoring.Options/GlobalCounterOptions.cs b/src/Microsoft.Diagnostics.Monitoring.Options/GlobalCounterOptions.cs index c360b5184d1..fc396a75c70 100644 --- a/src/Microsoft.Diagnostics.Monitoring.Options/GlobalCounterOptions.cs +++ b/src/Microsoft.Diagnostics.Monitoring.Options/GlobalCounterOptions.cs @@ -7,6 +7,8 @@ using System.ComponentModel.DataAnnotations; using System.Globalization; using System.Linq; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; namespace Microsoft.Diagnostics.Monitoring.WebApi { @@ -52,19 +54,19 @@ partial class GlobalCounterOptions : IValidatableObject { public IEnumerable Validate(ValidationContext validationContext) { + var providerValidator = validationContext.GetRequiredService>(); var results = new List(); if (Providers != null) { - var providerResults = new List(); foreach ((string provider, GlobalProviderOptions options) in Providers) { - providerResults.Clear(); - if (!Validator.TryValidateObject(options, new ValidationContext(options), providerResults, true)) + ValidateOptionsResult providerResults = providerValidator.Validate(provider, options); + if (providerResults.Failed) { // We prefix the validation error with the provider. - results.AddRange(providerResults.Select(r => new ValidationResult( - string.Format(CultureInfo.CurrentCulture, OptionsDisplayStrings.ErrorMessage_NestedProviderValidationError, provider, r.ErrorMessage)))); + results.AddRange(providerResults.Failures.Select(r => new ValidationResult( + string.Format(CultureInfo.CurrentCulture, OptionsDisplayStrings.ErrorMessage_NestedProviderValidationError, provider, r)))); } } } diff --git a/src/Microsoft.Diagnostics.Monitoring.Options/MetricsOptions.cs b/src/Microsoft.Diagnostics.Monitoring.Options/MetricsOptions.cs index faa647690f3..7d7b5a9e9d7 100644 --- a/src/Microsoft.Diagnostics.Monitoring.Options/MetricsOptions.cs +++ b/src/Microsoft.Diagnostics.Monitoring.Options/MetricsOptions.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.ComponentModel; @@ -43,6 +44,7 @@ public class MetricsOptions [Display( ResourceType = typeof(OptionsDisplayStrings), Description = nameof(OptionsDisplayStrings.DisplayAttributeDescription_MetricsOptions_Providers))] + [ValidateEnumeratedItems] public List Providers { get; set; } = []; [Display( diff --git a/src/Microsoft.Diagnostics.Monitoring.Options/Microsoft.Diagnostics.Monitoring.Options.csproj b/src/Microsoft.Diagnostics.Monitoring.Options/Microsoft.Diagnostics.Monitoring.Options.csproj index f11b2d63e0e..b8763eb1259 100644 --- a/src/Microsoft.Diagnostics.Monitoring.Options/Microsoft.Diagnostics.Monitoring.Options.csproj +++ b/src/Microsoft.Diagnostics.Monitoring.Options/Microsoft.Diagnostics.Monitoring.Options.csproj @@ -1,4 +1,4 @@ - +