Partilhar via


Tutorial: Usar a configuração dinâmica em um aplicativo Web ASP.NET (.NET Framework)

Os dados da Configuração do Aplicativo podem ser carregados como Configurações do Aplicativo em um aplicativo .NET Framework. Para obter mais informações, consulte o guia de início rápido. No entanto, conforme projetado pelo .NET Framework, as Configurações do Aplicativo só podem ser atualizadas após a reinicialização do aplicativo. O provedor .NET de Configuração de Aplicativo é uma biblioteca .NET Standard. Ele suporta cache e atualização de configuração dinamicamente sem reinicialização do aplicativo. Este tutorial mostra como você pode implementar atualizações de configuração dinâmica em um aplicativo ASP.NET Web Forms. A mesma técnica se aplica a aplicativos MVC do .NET Framework.

Neste tutorial, você aprenderá a:

  • Configure seu aplicativo Web ASP.NET para atualizar sua configuração em resposta a alterações em uma loja de configuração de aplicativos.
  • Injete a configuração mais recente em solicitações para seu aplicativo.

Pré-requisitos

Adicionar valores-chave

Adicione as seguintes chaves-valores à loja de Configuração do Aplicativo e deixe Etiqueta e Tipo de Conteúdo com os seus valores padrão. Para obter mais informações sobre como adicionar valores-chave a uma loja usando o portal do Azure ou a CLI, vá para Criar um valor-chave.

Chave Valor
TestApp:Configurações:BackgroundColor Branco
TestApp:Configurações:FontColor Preto
TestApp:Configurações:FontSize 40
TestApp:Configurações:Mensagem Dados da Configuração do Aplicativo do Azure

Criar um aplicativo Web ASP.NET

  1. Inicie o Visual Studio e selecione Criar um novo projeto.

  2. Selecione ASP.NET Aplicativo Web (.NET Framework) com C# na lista de modelos de projeto e pressione Avançar.

  3. Em Configurar seu novo projeto, insira um nome de projeto. Em Framework, selecione .NET Framework 4.7.2 ou superior. Selecione Criar.

  4. Em Criar um novo aplicativo Web ASP.NET, selecione Web Forms. Selecione Criar.

Recarregar dados da Configuração do Aplicativo

  1. Clique com o botão direito do mouse em seu projeto e selecione Gerenciar pacotes NuGet. Na guia Procurar , pesquise e adicione a versão mais recente dos seguintes pacotes NuGet ao seu projeto.

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity
  2. Abra Global.asax.cs arquivo e adicione os namespaces a seguir.

    using Azure.Identity;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Adicione as seguintes variáveis de membro estático à Global classe.

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. Adicione um Application_Start método à Global classe. Se o método já existir, adicione o seguinte código a ele.

    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();
    }
    

    O Application_Start método é chamado na primeira solicitação para seu aplicativo Web. É chamado apenas uma vez durante o ciclo de vida do aplicativo. Como tal, é um bom lugar para inicializar seu IConfiguration objeto e carregar dados da Configuração do aplicativo.

    Dentro do ConfigureRefresh método, você chama o RegisterAll método para instruir o provedor de Configuração do Aplicativo a recarregar toda a configuração sempre que detetar uma alteração em qualquer um dos valores-chave selecionados (aqueles que começam com TestApp: e não têm rótulo). Para obter mais informações sobre como monitorar alterações de configuração, consulte Práticas recomendadas para atualização de configuração.

    O SetRefreshInterval método especifica o tempo mínimo que deve decorrer antes que uma nova solicitação seja feita à Configuração do Aplicativo para verificar se há alterações na configuração. Neste exemplo, você substitui o tempo de expiração padrão de 30 segundos, especificando um tempo de 5 minutos. Ele reduz o número potencial de solicitações feitas à sua loja de configuração de aplicativos.

  5. Adicione um Application_BeginRequest método à Global classe. Se o método já existir, adicione o seguinte código a ele.

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

    Chamar o ConfigureRefresh método sozinho não fará com que a configuração seja atualizada automaticamente. Você chama o TryRefreshAsync método no início de cada solicitação para sinalizar uma atualização. Esse design garante que seu aplicativo só envie solicitações para a Configuração do Aplicativo quando estiver recebendo solicitações ativamente.

    Chamar TryRefreshAsync é um no-op antes de passar o intervalo de atualização configurado, portanto, o impacto no desempenho é mínimo. Quando uma solicitação é feita à Configuração do Aplicativo, como você não espera na tarefa, a configuração é atualizada de forma assíncrona sem bloquear a execução da solicitação atual. A solicitação atual pode não obter os valores de configuração atualizados, mas as solicitações subsequentes serão suficientes.

    Se a chamada TryRefreshAsync falhar por qualquer motivo, seu aplicativo continuará a usar a configuração em cache. Outra tentativa será feita quando o intervalo de atualização configurado tiver passado novamente e a chamada for acionada TryRefreshAsync por uma nova solicitação ao seu aplicativo.

Usar os dados de configuração mais recentes

  1. Abra Default.aspx e substitua seu conteúdo pela marcação a seguir. Verifique se o atributo Inherits corresponde ao namespace e ao nome da classe do seu aplicativo.

    <%@ 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 e atualize-o com o código a seguir.

    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;
            }
        }
    }
    

Compilar e executar o aplicativo

  1. Defina uma variável de ambiente.

    Defina uma variável de ambiente nomeada Endpoint para o ponto de extremidade da sua loja de Configuração de Aplicativos encontrado em Visão geral da sua loja no portal do Azure.

    Se você usar o prompt de comando do Windows, execute o seguinte comando e reinicie o prompt de comando para permitir que a alteração entre em vigor:

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

    Se você usar o PowerShell, execute o seguinte comando:

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

    Se você usa macOS ou Linux, execute o seguinte comando:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. Reinicie o Visual Studio para permitir que a alteração entre em vigor.

  3. Pressione Ctrl + F5 para criar e executar o aplicativo Web.

    Inicialização local do aplicativo

  4. No portal do Azure, navegue até o Gerenciador de configurações do seu repositório de configuração de aplicativos e atualize o valor das seguintes chaves.

    Chave Valor
    TestApp:Configurações:BackgroundColor Verde
    TestApp:Configurações:FontColor Cinza claro
    TestApp:Configurações:Mensagem Dados da Configuração de Aplicativos do Azure - agora com atualizações em tempo real!
  5. Atualize a página do navegador para ver as novas definições de configuração. Pode ser necessário atualizar mais de uma vez para que as alterações sejam refletidas ou alterar o intervalo de atualização para menos de 5 minutos.

    Atualização do aplicativo local

Observação

Você pode baixar o código de exemplo usado neste tutorial do repositório GitHub de Configuração de Aplicativo do Azure.

Limpeza de recursos

Se não quiser continuar a utilizar os recursos criados neste artigo, elimine o grupo de recursos que criou aqui para evitar cobranças.

Importante

A eliminação de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos nele contidos são excluídos permanentemente. Certifique-se de não excluir acidentalmente o grupo de recursos ou recursos errados. Se você criou os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que deseja manter, exclua cada recurso individualmente de seu respetivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome, introduza o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para ver uma visão geral.
  4. Selecione Eliminar grupo de recursos.
  5. É-lhe pedido que confirme a eliminação do grupo de recursos. Insira o nome do grupo de recursos a ser confirmado e selecione Excluir.

Após alguns momentos, o grupo de recursos e todos os seus recursos são excluídos.

Próximos passos

Neste tutorial, você habilitou seu aplicativo Web Forms ASP.NET para atualizar dinamicamente as definições de configuração da Configuração do aplicativo. Para saber como habilitar a configuração dinâmica em um aplicativo .NET Framework, continue para o próximo tutorial:

Para saber como usar uma identidade gerenciada do Azure para simplificar o acesso à Configuração do Aplicativo, continue para o próximo tutorial: