Tutorial: Utilizar a configuração dinâmica numa aplicação Web ASP.NET (.NET Framework)
Os dados de App Configuration podem ser carregados como Definições da Aplicação numa aplicação .NET Framework. Para obter mais informações, veja o início rápido. No entanto, tal como foi concebido pela .NET Framework, as Definições da Aplicação só podem ser atualizadas após o reinício da aplicação. O fornecedor de App Configuration .NET é uma biblioteca .NET Standard. Suporta a colocação em cache e a atualização dinâmica da configuração sem reinício da aplicação. Este tutorial mostra como pode implementar atualizações de configuração dinâmicas numa aplicação ASP.NET Web Forms. A mesma técnica aplica-se a .NET Framework aplicações MVC.
Neste tutorial, ficará a saber como:
- Configure a sua aplicação Web ASP.NET para atualizar a respetiva configuração em resposta a alterações num arquivo de App Configuration.
- Injete a configuração mais recente nos pedidos para a sua aplicação.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma gratuitamente.
- Uma loja App Configuration. Criar uma loja.
- Visual Studio
- .NET Framework 4.7.2 ou posterior
Adicionar valores-chave
Adicione os seguintes valores-chave ao arquivo App Configuration e deixe Etiqueta e Tipo de Conteúdo com os respetivos valores predefinidos. Para obter mais informações sobre como adicionar valores-chave a um arquivo com o portal do Azure ou a CLI, aceda a Criar um valor-chave.
Chave | Valor |
---|---|
TestApp:Settings:BackgroundColor | Branco |
TestApp:Settings:FontColor | Negra |
TestApp:Settings:FontSize | 40 |
TestApp:Settings:Message | Dados de Azure App Configuration |
TestApp:Settings:Sentinel | v1 |
Criar uma Aplicação Web ASP.NET
Inicie o Visual Studio e selecione Criar um novo projeto.
Selecione ASP.NET Aplicação Web (.NET Framework) com C# na lista de modelos de projeto e prima Seguinte.
Em Configurar o novo projeto, introduza um nome de projeto. Em Framework, selecione .NET Framework 4.7.2 ou superior. Prima Criar.
Em Criar uma nova Aplicação Web ASP.NET, selecione Web Forms. Prima Criar.
Recarregar dados do App Configuration
Clique com o botão direito do rato no projeto e selecione Gerir Pacotes NuGet. No separador Procurar , procure e adicione a versão mais recente do seguinte pacote NuGet ao seu projeto.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Abra o ficheiro Global.asax.cs e adicione os seguintes espaços de nomes.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Adicione as seguintes variáveis de membro estático à
Global
classe .public static IConfiguration Configuration; private static IConfigurationRefresher _configurationRefresher;
Adicione um
Application_Start
método àGlobal
classe . Se o método já existir, adicione o seguinte código ao mesmo.protected void Application_Start(object sender, EventArgs e) { ConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")) // Load all keys that start with `TestApp:` and have no label. .Select("TestApp:*") // Configure to reload configuration if the registered key 'TestApp:Settings:Sentinel' is modified. .ConfigureRefresh(refresh => { refresh.Register("TestApp:Settings:Sentinel", refreshAll:true) .SetCacheExpiration(new TimeSpan(0, 5, 0)); }); _configurationRefresher = options.GetRefresher(); }); Configuration = builder.Build(); }
O
Application_Start
método é chamado no primeiro pedido à sua aplicação Web. É chamado apenas uma vez durante o ciclo de vida da aplicação. Como tal, é um bom local para inicializar o objetoIConfiguration
e carregar dados de App Configuration.ConfigureRefresh
No método , é registada uma chave no arquivo de App Configuration para monitorização de alterações. OrefreshAll
parâmetro para oRegister
método indica que todos os valores de configuração devem ser atualizados se a chave registada for alterada. Neste exemplo, a chave TestApp:Settings:Sentinel é uma chave sentinela que atualiza depois de concluir a alteração de todas as outras chaves. Quando é detetada uma alteração, a aplicação atualiza todos os valores de configuração. Esta abordagem ajuda a garantir a consistência da configuração na sua aplicação em comparação com a monitorização de todas as chaves para alterações.O
SetCacheExpiration
método especifica o tempo mínimo que tem de ser decorrido antes de ser feito um novo pedido para App Configuration para verificar se existem alterações de configuração. Neste exemplo, substitui o tempo de expiração predefinido de 30 segundos, especificando antes um tempo de 5 minutos. Reduz o número potencial de pedidos feitos ao seu arquivo de App Configuration.Adicione um
Application_BeginRequest
método àGlobal
classe . Se o método já existir, adicione o seguinte código ao mesmo.protected void Application_BeginRequest(object sender, EventArgs e) { _ = _configurationRefresher.TryRefreshAsync(); }
Chamar o
ConfigureRefresh
método por si só não fará com que a configuração seja atualizada automaticamente. Chama oTryRefreshAsync
método no início de cada pedido para sinalizar uma atualização. Este design garante que a sua aplicação só envia pedidos para App Configuration quando está a receber ativamente pedidos.A chamada
TryRefreshAsync
não é executada antes de decorrido o tempo de expiração da cache configurada, pelo que o impacto no desempenho é mínimo. Quando é feito um pedido para App Configuration, uma vez que não aguarda a tarefa, a configuração é atualizada de forma assíncrona sem bloquear a execução do pedido atual. O pedido atual pode não obter os valores de configuração atualizados, mas os pedidos subsequentes irão fazê-lo.Se a chamada
TryRefreshAsync
falhar por algum motivo, a aplicação continuará a utilizar a configuração em cache. Será efetuada outra tentativa quando o tempo de expiração da cache configurada tiver passado novamente e aTryRefreshAsync
chamada for acionada por um novo pedido para a sua aplicação.
Utilizar os dados de configuração mais recentes
Abra Default.aspx e substitua o respetivo conteúdo pela seguinte marcação. Certifique-se de que o atributo Herda corresponde ao espaço de nomes e ao nome da classe da sua aplicação.
<%@ 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>
Abra Default.aspx.cs e atualize-o com o seguinte código.
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 a aplicação
Defina uma variável de ambiente denominada ConnectionString para a cadeia de ligação de chave só de leitura obtida durante a criação do arquivo App Configuration.
Se utilizar a linha de comandos do Windows, execute o seguinte comando:
setx ConnectionString "<connection-string-of-your-app-configuration-store>"
Se utilizar Windows PowerShell, execute o seguinte comando:
$Env:ConnectionString = "<connection-string-of-your-app-configuration-store>"
Reinicie o Visual Studio para permitir que a alteração entre em vigor.
Prima Ctrl + F5 para criar e executar a aplicação Web.
No portal do Azure, navegue para o Explorador de configuração do seu arquivo de App Configuration e atualize o valor das seguintes chaves. Lembre-se de atualizar finalmente a chave do Sentinel TestApp:Settings:Sentinel .
Chave Valor TestApp:Settings:BackgroundColor Green TestApp:Settings:FontColor ClaroGray TestApp:Settings:Message Dados de Azure App Configuration - agora com atualizações em direto! TestApp:Settings:Sentinel v2 Atualize a página do browser para ver as novas definições de configuração. Poderá ter de atualizar mais do que uma vez para que as alterações sejam refletidas ou alterar o tempo de expiração da cache para menos de 5 minutos.
Nota
Pode transferir o código de exemplo utilizado neste tutorial a partir do repositório Azure App Configuration GitHub.
Limpar os recursos
Se não quiser continuar a utilizar os recursos criados neste artigo, elimine o grupo de recursos que criou aqui para evitar custos.
Importante
A eliminação de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos nele contidos são eliminados permanentemente. Certifique-se de que não elimina acidentalmente os recursos ou o grupo de recursos errados. Se criou os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que pretende manter, elimine cada recurso individualmente do respetivo painel em vez de eliminar o grupo de recursos.
- Inicie sessão no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome , introduza o nome do grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para ver uma descrição geral.
- Selecione Eliminar grupo de recursos.
- É-lhe pedido que confirme a eliminação do grupo de recursos. Introduza o nome do grupo de recursos a confirmar e selecione Eliminar.
Após alguns momentos, o grupo de recursos e todos os recursos são eliminados.
Passos seguintes
Neste tutorial, ativou a sua aplicação ASP.NET Web Forms para atualizar dinamicamente as definições de configuração a partir de App Configuration. Para saber como ativar a configuração dinâmica numa aplicação .NET Framework, avance para o próximo tutorial:
Para saber como utilizar uma identidade gerida do Azure para simplificar o acesso ao App Configuration, avance para o próximo tutorial: