Swap registration and resolving of IRuntimeModeValidator items to collection builder
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user