Tutorial: Uso de la configuración dinámica en una aplicación de Azure Functions
El proveedor de configuración de App Configuration para .NET admite el almacenamiento en caché y la actualización de la configuración controlada dinámicamente por la actividad de la aplicación. Este tutorial le muestra cómo puede implementar las actualizaciones de configuración dinámica en el código. Se basa en la aplicación de Azure Functions que se presentó en las guías de inicio rápido. Antes de continuar, finalice primero el tutorial Creación de una aplicación de Azure Functions con Azure App Configuration.
En este tutorial, aprenderá a:
- Configurar la aplicación de Azure Functions para actualizar su configuración en respuesta a los cambios en un almacén de App Configuration.
- Inserte la configuración más reciente en las llamadas a Azure Functions.
Prerrequisitos
- Una suscripción a Azure: cree una cuenta gratuita
- Visual Studio 2019 con la carga de trabajo de desarrollo de Azure.
- Herramientas de Azure Functions
- Finalizar la guía de inicio rápido Creación de una aplicación de Azure Functions con Azure App Configuration.
Recarga de datos de App Configuration
Abra Startup.cs y actualice el método
ConfigureAppConfiguration.El método
ConfigureRefreshregistra un valor donde se comprobarán los cambios que se produzcan siempre que se desencadene una actualización en la aplicación, lo cual hará en el paso posterior al agregar_configurationRefresher.TryRefreshAsync(). El parámetrorefreshAllindica al proveedor App Configuration que vuelva a cargar toda la configuración siempre que se detecte un cambio en la configuración registrada.Todas las configuraciones registradas para la actualización tienen un tiempo de expiración predeterminado de 30 segundos de la caché. Puede actualizarse al llamar al método
AzureAppConfigurationRefreshOptions.SetCacheExpiration.public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { builder.ConfigurationBuilder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) // Load all keys that start with `TestApp:` .Select("TestApp:*") // Configure to reload configuration if the registered sentinel key is modified .ConfigureRefresh(refreshOptions => refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true)); }); }Sugerencia
Al actualizar varios valores de clave en App Configuration, normalmente no se desea que la aplicación vuelva a cargar la configuración hasta que se hayan realizado los cambios. Puede registrar una clave de Sentinel y actualizarla solo cuando se hayan completado los demás cambios de configuración. Esto ayuda a garantizar la coherencia de la configuración en la aplicación.
Actualice el método
Configurepara que los servicios de Azure App Configuration estén disponibles mediante la inserción de dependencias.public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddAzureAppConfiguration(); }Abra Function1.cs y agregue los espacios de nombres siguientes.
using System.Linq; using Microsoft.Extensions.Configuration.AzureAppConfiguration;Actualice el constructor para obtener la instancia de
IConfigurationRefresherProvidermediante la inserción de dependencias, desde la que podrá obtener la instancia deIConfigurationRefresher.private readonly IConfiguration _configuration; private readonly IConfigurationRefresher _configurationRefresher; public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider) { _configuration = configuration; _configurationRefresher = refresherProvider.Refreshers.First(); }Actualice el método
Runy señalice para actualizar la configuración mediante el métodoTryRefreshAsyncal principio de la llamada a Azure Functions. No será operativo si no se alcanza la ventana de tiempo de expiración de la memoria caché. Elimine el operadorawaitsi prefiere que la configuración se actualice sin bloqueos en la llamada a Functions actual. De ese modo, las llamadas a Functions posteriores obtendrán el valor actualizado.public async Task<IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); await _configurationRefresher.TryRefreshAsync(); string keyName = "TestApp:Settings:Message"; string message = _configuration[keyName]; return message != null ? (ActionResult)new OkObjectResult(message) : new BadRequestObjectResult($"Please create a key-value with the key '{keyName}' in App Configuration."); }
Prueba local de la función
Establezca una variable de entorno llamada ConnectionString y defínala como la clave de acceso a su almacén de configuración de aplicaciones. Si usa el símbolo del sistema de Windows, ejecute el siguiente comando y reinícielo para que se aplique el cambio:
setx ConnectionString "connection-string-of-your-app-configuration-store"Si usa Windows PowerShell, ejecute el siguiente comando:
$Env:ConnectionString = "connection-string-of-your-app-configuration-store"Si usa macOS o Linux, ejecute el siguiente comando:
export ConnectionString='connection-string-of-your-app-configuration-store'Para probar la función, presione F5. Si se le solicita, acepte la solicitud de Visual Studio para descargar e instalar las herramientas de Azure Functions Core (CLI) . También es preciso que habilite una excepción de firewall para que las herramientas para controlen las solicitudes de HTTP.
Copie la dirección URL de la función de los resultados del runtime de Azure Functions.

Pegue la dirección URL de la solicitud HTTP en la barra de direcciones del explorador. La siguiente imagen muestra la respuesta en el explorador para la solicitud GET local devuelta por la función.

Inicie sesión en Azure Portal. Seleccione Todos los recursos y seleccione el almacén de App Configuration que creó en el inicio rápido.
Seleccione Explorador de configuración y actualice el valor de la clave siguiente:
Clave Value TestApp:Settings:Message Datos de Azure App Configuration, actualizados A continuación, cree la clave de Sentinel o modifique su valor si ya existe; por ejemplo,
Clave Valor TestApp:Settings:Sentinel v1 Actualice el explorador varias veces. Cuando la configuración almacenada en la memoria caché expira después de 30 segundos, la página muestra la respuesta de la llamada a Azure Functions con el valor actualizado.

Nota
El código de ejemplo que se usa en este tutorial se puede descargar desde el repositorio de GitHub de App Configuration.
Limpieza de recursos
Si no desea seguir usando los recursos creados en este artículo, elimine el grupo de recursos que creó aquí para evitar cargos.
Importante
La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos que contiene se eliminan permanentemente. Asegúrese de no eliminar por accidente el grupo de recursos o los recursos equivocados. Si creó los recursos para este artículo en un grupo de recursos que contenga los recursos que desee conservar, elimine cada recurso de forma individual desde su panel respectivo, en lugar de eliminar el grupo de recursos.
- Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
- En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
- En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
- Seleccione Eliminar grupo de recursos.
- Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y seleccione Eliminar.
Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.
Pasos siguientes
En este tutorial, ha habilitado la aplicación de Azure Functions para actualizar dinámicamente la configuración a partir de App Configuration. Para obtener información sobre cómo usar una identidad administrada de Azure para simplificar el acceso a App Configuration, vaya al siguiente tutorial.