Compartir a través de


Tutorial: Uso de la configuración dinámica en una aplicación web de ASP.NET (.NET Framework)

Los datos de App Configuration se pueden cargar como Configuración de la aplicación en una aplicación de .NET Framework. Para obtener más información, consulte el inicio rápido. Sin embargo, como está diseñado por .NET Framework, la configuración de la aplicación solo se puede actualizar tras el reinicio de la aplicación. El proveedor .NET de App Configuration es una biblioteca .NET Standard. Admite el almacenamiento en caché y la actualización dinámica de la configuración sin reiniciar la aplicación. En este tutorial se muestra cómo puede implementar actualizaciones de configuración dinámicas en una aplicación de formularios web Forms de ASP.NET. La misma técnica se aplica a las aplicaciones MVC de .NET Framework.

En este tutorial, aprenderá a:

  • Configura la aplicación web de ASP.NET para actualizar su configuración en respuesta a los cambios en un almacén de Configuración de Aplicaciones.
  • Inserte la configuración más reciente en las solicitudes a la aplicación.

Prerrequisitos

Agregar pares de clave-valor

Agregue las siguientes claves y valores al almacenamiento de App Configuration y deje Etiqueta y Tipo de contenido con sus valores predeterminados. Para obtener más información sobre cómo agregar pares clave-valor a un almacén mediante Azure Portal o la CLI, vaya a Creación de un par clave-valor.

Clave Importancia
TestApp:Configuración:Color de fondo white
TestApp:Settings:FontColor negro
TestApp:Settings:FontSize 40
TestApp:Settings:Message Datos de Azure App Configuration

Creación de una aplicación web de ASP.NET

  1. Inicie Visual Studio y seleccione Crear un proyecto.

  2. Seleccione ASP.NET Aplicación web (.NET Framework) con C# en la lista de plantillas de proyecto y presione Siguiente.

  3. En Configurar el nuevo proyecto, asígnele al proyecto un nombre. En Marco, seleccione .NET Framework 4.7.2 o una versión posterior. Pulse Crear.

  4. En Crear una nueva aplicación web ASP.NET, seleccione Formularios web. Pulse Crear.

Recarga de datos de App Configuration

  1. Haga clic con el botón derecho en el proyecto y seleccione Administrar paquetes NuGet. En la pestaña Examinar , busque y agregue la versión más reciente de los siguientes paquetes NuGet al proyecto.

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity
  2. Abra Global.asax.cs archivo y agregue los siguientes espacios de nombres.

    using Azure.Identity;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Agregue las siguientes variables de miembro estático a la Global clase .

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. Agregue un Application_Start método a la Global clase . Si el método ya existe, agregue el código siguiente.

    protected void Application_Start(object sender, EventArgs e)
    {
        ConfigurationBuilder builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
            options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                   // Load all keys that start with `TestApp:` and have no label.
                   .Select("TestApp:*")
                   // Reload configuration if any selected key-values have changed.
                   .ConfigureRefresh(refresh => 
                   {
                       refresh.RegisterAll()
                              .SetRefreshInterval(new TimeSpan(0, 5, 0));
                   });
            _configurationRefresher = options.GetRefresher();
        });
    
        Configuration = builder.Build();
    }
    

    El método Application_Start se invoca al recibir la primera solicitud a la aplicación web. Se llama solo una vez durante el ciclo de vida de la aplicación. Por lo tanto, es un buen lugar para inicializar el IConfiguration objeto y cargar datos desde App Configuration.

    Dentro del método ConfigureRefresh, se invoca el método RegisterAll para indicar al proveedor de App Configuration que recargue toda la configuración siempre que detecte un cambio en cualquiera de los pares clave-valor seleccionados (aquellos que empiezan por TestApp: y no tienen etiqueta). Para obtener más información sobre la supervisión de los cambios de configuración, consulte Procedimientos recomendados para la actualización de la configuración.

    El método SetRefreshInterval especifica el tiempo mínimo que debe transcurrir antes de que se realice una nueva solicitud a App Configuration para comprobar si hay cambios de configuración. En este ejemplo, invalida el tiempo de expiración predeterminado de 30 segundos, especificando una hora de 5 minutos en su lugar. Esto reduce el número posible de solicitudes realizadas al almacén de App Configuration.

  5. Agregue un Application_BeginRequest método a la Global clase . Si el método ya existe, agregue el código siguiente.

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        _ = _configurationRefresher.TryRefreshAsync();
    }
    

    La llamada al método ConfigureRefresh por sí sola no hará que la configuración se actualice automáticamente. Llame al TryRefreshAsync método al principio de cada solicitud para indicar una actualización. Este diseño garantiza que la aplicación solo envía solicitudes a App Configuration cuando recibe solicitudes activamente.

    Llamar a TryRefreshAsync no tiene efecto antes de que transcurra el intervalo de actualización configurado, por lo que su impacto en el rendimiento es mínimo. Cuando se realiza una solicitud a App Configuration, dado que no espera que la tarea se complete, la configuración se actualiza de manera asincrónica sin bloquear la ejecución de la solicitud actual. Es posible que la solicitud actual no obtenga los valores de configuración actualizados, pero las solicitudes posteriores lo harán.

    Si se produce un error en la llamada TryRefreshAsync por cualquier motivo, la aplicación seguirá usando la configuración almacenada en caché. Otro intento se realizará cuando se haya pasado de nuevo el intervalo de actualización configurado y la TryRefreshAsync llamada se desencadene mediante una nueva solicitud a la aplicación.

Uso de los datos de configuración más recientes

  1. Abra Default.aspx y reemplace su contenido por el marcado siguiente. Asegúrese de que el atributo Inherits coincide con el espacio de nombres y el nombre de clase de la aplicación.

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebFormApp.Default" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Azure App Configuration Web Forms Demo</title>
    </head>
    <body id="body" runat="server">
        <form id="form1" runat="server">
            <div style="text-align: center">
                <asp:Label ID="message" runat="server" />
            </div>
        </form>
    </body>
    </html>
    
  2. Abra Default.aspx.cs y actualícelo con el código siguiente.

    using System;
    using System.Web.UI.WebControls;
    
    namespace WebFormApp
    {
        public partial class Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                // Read configuration from the IConfiguration object loaded from Azure App Configuration
                string messageText = Global.Configuration["TestApp:Settings:Message"] ?? "Please add the key \"TestApp:Settings:Message\" in your Azure App Configuration store.";
                string messageFontSize = Global.Configuration["TestApp:Settings:FontSize"] ?? "20";
                string messageFontColor = Global.Configuration["TestApp:Settings:FontColor"] ?? "Black";
                string backgroundColor = Global.Configuration["TestApp:Settings:BackgroundColor"] ?? "White";
    
                message.Text = messageText;
                message.Font.Size = FontUnit.Point(int.Parse(messageFontSize));
                message.ForeColor = System.Drawing.Color.FromName(messageFontColor);
                body.Attributes["bgcolor"] = backgroundColor;
            }
        }
    }
    

Compilación y ejecución de la aplicación

  1. Establezca una variable de entorno.

    Establezca una variable de entorno denominada Endpoint en el punto de conexión del almacén de App Configuration que se encuentra en la Información general del almacén en Azure Portal.

    Si usa el símbolo del sistema de Windows, ejecute el siguiente comando y reinícielo para que se aplique el cambio:

    setx Endpoint "<endpoint-of-your-app-configuration-store>"
    

    Si usa PowerShell, ejecute el siguiente comando:

    $Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
    

    Si usa macOS o Linux, ejecute el siguiente comando:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. Reinicie Visual Studio para permitir que el cambio surta efecto.

  3. Presione Ctrl + F5 para compilar y ejecutar la aplicación web.

    Inicio local de la aplicación

  4. En el Portal de Azure, navegue a la sección Configuration Explorer del almacén de App Configuration y actualice el valor de las siguientes claves.

    Clave Importancia
    TestApp:Configuración:Color de fondo Verde
    TestApp:Settings:FontColor Gris claro
    TestApp:Settings:Message Datos de Azure App Configuration: ahora con actualizaciones en directo.
  5. Actualice la página del explorador para ver los nuevos valores de configuración. Es posible que tenga que actualizar más de una vez para que los cambios se reflejen o cambien el intervalo de actualización a menos de 5 minutos.

    Actualización local de la aplicación

Nota:

Puede descargar el código de ejemplo que se usa en este tutorial desde el repositorio de GitHub de Azure App Configuration.

Limpieza de recursos

Si no quiere seguir usando los recursos que se han creado 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 que no elimina 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.

  1. Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
  2. En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
  3. En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
  4. Seleccione Eliminar grupo de recursos.
  5. 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 ASP.NET Web Forms para actualizar dinámicamente las opciones de configuración desde App Configuration. Para obtener información sobre cómo habilitar la configuración dinámica en una aplicación de .NET Framework, continúe con el siguiente tutorial:

Para aprender a usar una identidad administrada de Azure para simplificar el acceso a App Configuration, vaya al siguiente tutorial: