diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs index 154bae9cd0..62bafcd28e 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.CoreServices.cs @@ -86,11 +86,12 @@ public static partial class UmbracoBuilderExtensions // Add runtime mode validation builder.Services.AddSingleton(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); - builder.Services.AddTransient(); + builder.RuntimeModeValidators() + .Add() + .Add() + .Add() + .Add() + .Add(); // composers builder diff --git a/src/Umbraco.Infrastructure/Runtime/RuntimeModeValidationService.cs b/src/Umbraco.Infrastructure/Runtime/RuntimeModeValidationService.cs index 85eec91786..c4bbeb6902 100644 --- a/src/Umbraco.Infrastructure/Runtime/RuntimeModeValidationService.cs +++ b/src/Umbraco.Infrastructure/Runtime/RuntimeModeValidationService.cs @@ -29,11 +29,18 @@ internal class RuntimeModeValidationService : IRuntimeModeValidationService var validationMessages = new List(); // Runtime mode validators are registered transient, but this service is registered as singleton - foreach (var runtimeModeValidator in _serviceProvider.GetServices()) + using (var scope = _serviceProvider.CreateScope()) { - if (runtimeModeValidator.Validate(runtimeMode, out var validationMessage) == false) + var runtimeModeValidators = scope.ServiceProvider.GetService(); + if (runtimeModeValidators is not null) { - validationMessages.Add(validationMessage); + foreach (var runtimeModeValidator in runtimeModeValidators) + { + if (runtimeModeValidator.Validate(runtimeMode, out var validationMessage) == false) + { + validationMessages.Add(validationMessage); + } + } } }