Configuración Posterior en ASP.NET Core Mediante el Patrón de Opciones
El proceso de configuración posterior de las opciones se ejecuta una vez realizada toda la configuración de IConfigureOptions
, y puede resultar útil en escenarios en los que es necesario invalidar la configuración original.
Este proceso se puede realizar mediante dos métodos:
PostConfigure
: Permite configurar posteriormente las opciones con nombre.PostConfigureAll
: Permite configurar posteriormente todas las instancias de configuración.
Considere el siguiente archivo appsettings.json
:
appsettings.json
{
"MongoDbSettings": {
"Host": "http://localhost/",
"Port": 27017
}
}
El siguiente código muestra el uso de PostConfigure
con la clase de opciones MongoDbSettings
:
Program.cs
using Microsoft.Extensions.Options;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOptions<MongoDbSettings>()
.BindConfiguration(nameof(MongoDbSettings))
.ValidateDataAnnotations()
.ValidateOnStart();
builder.Services.AddSingleton(serviceType =>
serviceType.GetRequiredService<IOptions<MongoDbSettings>>().Value);
builder.Services.PostConfigure<MongoDbSettings>(mongoDbSettings =>
{
if (!mongoDbSettings.Host?.StartsWith("https://") ?? false)
{
mongoDbSettings.Host = mongoDbSettings.Host?.Replace("http://", "https://");
}
});
builder.Services.ConfigureHttpJsonOptions(options =>
{
options.SerializerOptions.WriteIndented = true;
});
var app = builder.Build();
app.MapGet("/", (MongoDbSettings options) => options);
app.Run();
El código C# anterior:
- Se invalida el valor de la propiedad
Host
reemplazando http por https.
Artículos Relacionados
- Acceso a la Configuración de ASP.NET Core Mediante el Patrón de Opciones.
- Validación de la Configuración en ASP.NET Core Mediante el Patrón de Opciones.
- Acceso a la Configuración de ASP.NET Core Mediante IConfiguration.