Uso de etiquetas para proporcionar valores de configuración para cada entorno.
Muchas aplicaciones deben usar diferentes configuraciones en distintos entornos. Supongamos que una aplicación tiene un valor de configuración que define la cadena de conexión que se debe usar para la base de datos de back-end. Los desarrolladores de la aplicación usan una base de datos distinta de la que se usa en producción. La cadena de conexión de base de datos que la aplicación usa debe cambiarse a medida que la aplicación pasa del entorno de desarrollo a uno de producción.
En Azure App Configuration, puede usar etiquetas para definir valores diferentes para la misma clave. Por ejemplo, puede definir una clave única con valores diferentes para desarrollo y producción. Puede especificar qué etiqueta se va a cargar al conectarse a App Configuration.
Para demostrar esta funcionalidad, modificará la aplicación web creada en el Inicio rápido: Creación de una aplicación ASP.NET Core con Azure App Configuration para que use opciones de configuración distintas para el desarrollo y la producción. Complete la guía de inicio rápido antes de continuar.
Especificación de una etiqueta al agregar un valor de configuración
En Azure Portal, vaya al Explorador de configuración y busque la clave TestApp:Settings:FontColor que creó en la guía de inicio rápido. Seleccione el menú contextual y, a continuación, seleccione Agregar valor.
En la pantalla Agregar valor, escriba un Valor de red y una Etiqueta de Development. Deje el Tipo de contenido vacío. Seleccione Aplicar.
Cargar valores de configuración con una etiqueta especificada
De forma predeterminada, Azure App Configuration solo carga los valores de configuración sin etiqueta. Si definió etiquetas para los valores de configuración, querrá especificar las etiquetas que se van a usar al conectarse a App Configuration.
En la sección anterior, creó un valor de configuración diferente para el entorno de desarrollo. Use la variable HostingEnvironment.EnvironmentName
para determinar de forma dinámica en qué entorno se está ejecutando actualmente la aplicación. Para obtener más información, consulte Usar varios entornos en ASP.NET Core.
Agregue una referencia al espacio de nombres Microsoft.Extensions.Configuration.AzureAppConfiguration para acceder a las clases KeyFilter y LabelFilter.
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Cargue los valores de configuración con la etiqueta correspondiente al entorno actual. Para ello, pase el nombre del entorno al método Select
:
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddAzureAppConfiguration(options =>
{
options.Connect(builder.Configuration.GetConnectionString("AppConfig"))
// Load configuration values with no label
.Select(KeyFilter.Any, LabelFilter.Null)
// Override with any configuration values specific to current hosting env
.Select(KeyFilter.Any, builder.Environment.EnvironmentName);
});
Importante
El fragmento de código anterior usa la herramienta Secret Manager para cargar la cadena de conexión de App Configuration. Para obtener información sobre cómo almacenar la cadena de conexión mediante Secret Manager, consulte Inicio rápido: Creación de una aplicación ASP.NET Core con Azure App Configuration.
Se llama dos veces al método Select
. La primera vez, carga los valores de configuración sin etiqueta. A continuación, carga los valores de configuración con la etiqueta correspondiente al entorno actual. Estos valores específicos del entorno invalidan a todos los valores correspondientes sin etiqueta. No es necesario definir valores específicos del entorno para cada clave. Si una clave no tiene algún valor con una etiqueta que corresponda al entorno actual, se usará el valor sin etiqueta.
Pruebas en entornos diferentes
Abra el archivo launchSettings.json
en el directorio Properties
. Busque la entrada config
en profiles
. En la sección environmentVariables
, establezca la variable ASPNETCORE_ENVIRONMENT
en Production
.
Una vez establecidos los nuevos valores, compile y ejecute la aplicación.
dotnet build
dotnet run
Use un explorador web para ir a http://localhost:5000
. Observará que el color de la fuente es negro.
Actualice launchSettings.json
para establecer la variable ASPNETCORE_ENVIRONMENT
en Development
. Vuelva a ejecutar dotnet run
.
Observará que el color de fuente ahora es rojo. Esto se debe a que la aplicación ahora usa el valor de TestApp:Settings:FontColor
que tiene la etiqueta Development
. Todos los demás valores de configuración siguen siendo los mismos que los valores de producción.