ASP.NET CORE

Recarga de Archivos de Configuración en ASP.NET Core

6 de febrero, 2024

La principal ventaja de utilizar archivos de configuración (json, ini, xml, etc.) en ASP.NET Core, es la de no tener que volver a compilar o iniciar la aplicación cada vez que se desea modificar un valor. Sin embargo, en versiones anteriores de ASP.NET, cambiar un archivo web.config conlleva reiniciar la aplicación para obtener los nuevos valores.

Un escenario citado con frecuencia, y que demuestra lo útil de esta nueva característica de ASP.NET Core es al momento de depurar una aplicación, ya que se puede cambiar la configuración de Logging en tiempo de ejecución mediante el archivo appsettings.json, y obtener los nuevos valores de forma automática. Esto permite capturar información adicional y una vez encontrado el problema, volver a la configuración inicial.

¡Importante!
¡IMPORTANTE!

La recarga automática de valores de configuración solo está disponible para proveedores basados en archivos, o que deriven de la clase base FileConfigurationProvider, tales como: JsonConfigurationProvider, IniConfigurationProvider o XmlConfigurationProvider. El proveedor de variables de entorno no implementa esta característica.

La configuración de la recarga automática se realiza mediante los métodos de extensión AddJsonFile, AddIniFile o AddXmlFile y su parámetro reloadOnChange. Si este parámetro se establece en verdadero, la aplicación monitorea el sistema de archivos en busca de cambios y activa la reconstrucción completa de IConfiguration, si es necesario.

Cabe recalcar que WebApplicationBuilder configura los proveedores de archivos de forma predeterminada con el parámetro reloadOnChange en verdadero.

Ejemplo Subir

Considere el siguiente ejemplo:


var builder = WebApplication.CreateBuilder(args);

builder.Configuration.Sources.Clear(); 
builder.Configuration.AddJsonFile("DbSettings.json", optional: false, reloadOnChange: true);

builder.Services.ConfigureHttpJsonOptions(options =>
{
    options.SerializerOptions.WriteIndented = true;
});

var app = builder.Build();

app.MapGet("/", () => app.Configuration.AsEnumerable());

app.Run();

En el código anterior:

¡Importante!
¡IMPORTANTE!

Hay que tener presente, que la recarga automática de configuración conlleva a que ASP.NET Core configure e inicie un observador de archivos en segundo plano, lo que podría ocasionar problemas de rendimiento si se tienen demasiados archivos. Además, en la práctica no es común cambiar archivos de configuración en ambientes de producción, sin embargo, puede implementar este enfoque en escenarios estrictamente necesarios.

Artículos Relacionados

Referencias