Swap registration and resolving of IRuntimeModeValidator items to collection builder

This commit is contained in:
Ronald Barendse
2022-07-14 16:49:49 +02:00
parent 9cec603d46
commit 1fc64cd4ce
2 changed files with 16 additions and 8 deletions

View File

@@ -86,11 +86,12 @@ public static partial class UmbracoBuilderExtensions
// Add runtime mode validation
builder.Services.AddSingleton<IRuntimeModeValidationService, RuntimeModeValidationService>();
builder.Services.AddTransient<IRuntimeModeValidator, JITOptimizerValidator>();
builder.Services.AddTransient<IRuntimeModeValidator, UmbracoApplicationUrlValidator>();
builder.Services.AddTransient<IRuntimeModeValidator, UseHttpsValidator>();
builder.Services.AddTransient<IRuntimeModeValidator, RuntimeMinificationValidator>();
builder.Services.AddTransient<IRuntimeModeValidator, ModelsBuilderModeValidator>();
builder.RuntimeModeValidators()
.Add<JITOptimizerValidator>()
.Add<UmbracoApplicationUrlValidator>()
.Add<UseHttpsValidator>()
.Add<RuntimeMinificationValidator>()
.Add<ModelsBuilderModeValidator>();
// composers
builder

View File

@@ -29,11 +29,18 @@ internal class RuntimeModeValidationService : IRuntimeModeValidationService
var validationMessages = new List<string>();
// Runtime mode validators are registered transient, but this service is registered as singleton
foreach (var runtimeModeValidator in _serviceProvider.GetServices<IRuntimeModeValidator>())
using (var scope = _serviceProvider.CreateScope())
{
if (runtimeModeValidator.Validate(runtimeMode, out var validationMessage) == false)
var runtimeModeValidators = scope.ServiceProvider.GetService<RuntimeModeValidatorCollection>();
if (runtimeModeValidators is not null)
{
validationMessages.Add(validationMessage);
foreach (var runtimeModeValidator in runtimeModeValidators)
{
if (runtimeModeValidator.Validate(runtimeMode, out var validationMessage) == false)
{
validationMessages.Add(validationMessage);
}
}
}
}