Recarga de Archivos de Configuración en ASP.NET Core
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.
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
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();
El código C# anterior:
-
Se removieron o invalidaron todos los orígenes que se cargan de forma predeterminada (Archivos
appsettings.json
,appsettings.{Environment}.json
, variables de entorno, argumentos de línea de comandos, etc.) por medio del métodoClear
.INFORMACIÓNEn la mayoría de los casos, no es necesario personalizar el objeto
ConfigurationManager
mediante la eliminación e invalidación de los orígenes predeterminados. Los proveedores preestablecidos y añadidos porWebApplicationBuilder
son suficientes. Elimine, borre o invalide las fuentes predeterminadas solo si es estrictamente necesario, o al menos que se quieran agregar nuevos; como por ejemplo Azure Key Vault. - Se añade el archivo
DbSettings.json
por medio del método de extensiónAddJsonFile
, y se configura el parámetroreloadOnChange
con verdadero, confirmando así la recarga automática de la configuración al momento de que el archivo cambie. - Se configura que los elementos de configuración deben mostrarse con sangría.
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.
Artículos Relacionados
- Configuración en ASP.NET Core.
- Configuración en ASP.NET Core Mediante Archivos JSON.
- Configuración en ASP.NET Core Mediante Archivos INI.
- Configuración en ASP.NET Core Mediante Archivos XML.
- Configuración en ASP.NET Core Mediante Argumentos de Línea de Comandos.