Ler em inglês

Compartilhar via


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

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

Neste tutorial, você aprenderá como:

  • Configure seu aplicativo Web ASP.NET para atualizar sua configuração em resposta a alterações em um repositório de Configuração de Aplicativos.
  • Insira a configuração mais recente em solicitações para seu aplicativo.

Pré-requisitos

Adicionar valores-chave

Adicione os seguintes valores-chave ao repositório de Configuração de Aplicativos e deixe o Rótulo e Tipo de Conteúdo com seus valores padrão. Para mais informações sobre como adicionar valores-chave a um repositório usando o portal do Azure ou a CLI, acesse Criar um valor-chave.

Chave Valor
TestApp:Settings:BackgroundColor Branco
TestApp:Settings:FontColor black
TestApp:Settings:FontSize 40
TestApp:Settings:Message Dados da Configuração de Aplicativos do Azure

Criar um aplicativo Web ASP.NET

  1. Inicie o Visual Studio e selecione Criar um 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. Pressione Criar.

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

Recarregar os dados da Configuração de Aplicativo

  1. Clique com o botão direito do mouse no 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 código a seguir 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. Ele é 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 de Aplicativos.

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

    O método SetRefreshInterval especifica o tempo mínimo para fazer uma nova solicitação à Configuração de Aplicativos para verificar se há alterações de configuração. Neste exemplo, você substitui o tempo de expiração padrão de 30 segundos, especificando um tempo de 5 minutos em vez disso. Ele reduz o número potencial de solicitações feitas ao repositório de Configuração de Aplicativos.

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

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

    Chamar o método ConfigureRefresh 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 envie apenas solicitações para a Configuração de Aplicativos quando ele estiver recebendo ativamente solicitações.

    Chamar TryRefreshAsync é uma operação nula antes de transcorrer o intervalo de atualização configurado, portanto, seu impacto no desempenho é mínimo. Quando uma solicitação é feita ao App Configuration, uma vez que você não espera pela 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 os obterão.

    Se a chamada TryRefreshAsync falhar por algum motivo, seu aplicativo continuará a usar a configuração armazenada em cache. Outra tentativa será feita quando o intervalo de atualização configurado for passado novamente e a TryRefreshAsync chamada for disparada por uma nova solicitação para 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 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;
            }
        }
    }
    

Compile e execute o aplicativo

  1. Defina uma variável de ambiente.

    Defina uma variável de ambiente nomeada Endpoint para o ponto de extremidade do repositório de Configuração de Aplicativos encontrada sob a visão geral do seu repositório no portal do Azure.

    Se você usar o prompt de comando do Windows, execute o comando a seguir 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 comando a seguir:

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

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

    Local de inicialização do aplicativo

  4. No portal do Azure, navegue até o Gerenciador de Configurações do repositório de Configuração de Aplicativos e atualize o valor das chaves a seguir.

    Chave Valor
    TestApp:Settings:BackgroundColor Verde
    TestApp:Settings:FontColor LightGray
    TestApp:Settings:Message Dados da Configuração de Aplicativos do Azure – agora com atualizações ao vivo!
  5. Atualize a página do navegador para ver as novas definições de configuração. Talvez seja necessário atualizar mais de uma vez para que as alterações sejam refletidas ou altere o intervalo de atualização para menos de 5 minutos.

    Atualização local do aplicativo

Observação

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

Limpar os recursos

Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente grupo de recursos ou recursos incorretos. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo 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..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.

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

Próximas etapas

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

Para aprender a usar uma identidade gerenciada pelo Azure para simplificar o acesso à Configuração de Aplicativos, prossiga para o próximo tutorial: