Delen via


Zelfstudie: Dynamische configuratie gebruiken in een ASP.NET-webtoepassing (.NET Framework)

Gegevens uit App Configuration kunnen worden geladen als app-instellingen in een .NET Framework-toepassing. Zie de quickstart voor meer informatie. Zoals is ontworpen door .NET Framework, kunnen de app-instellingen echter alleen worden vernieuwd wanneer de toepassing opnieuw wordt opgestart. De .NET-provider van App Configuration is een .NET Standard-bibliotheek. Het biedt ondersteuning voor het dynamisch opslaan en vernieuwen van de configuratie zonder dat de toepassing opnieuw hoeft te worden opgestart. Deze zelfstudie laat zien hoe u dynamische configuratie-updates kunt implementeren in een ASP.NET Web Forms-toepassing. Dezelfde techniek is van toepassing op .NET Framework MVC-toepassingen.

In deze tutorial leer je hoe je:

  • Stel uw ASP.NET-webtoepassing in om de configuratie bij te werken als reactie op wijzigingen in een App Configuration-archief.
  • Injecteer de meest recente configuratie in aanvragen naar uw toepassing.

Vereiste voorwaarden

Sleutelwaarden toevoegen

Voeg de volgende sleutelwaarden toe aan het App Configuration-archief en laat label en inhoudstype ongewijzigd met de standaardwaarden. Ga naar Een sleutelwaarde maken voor meer informatie over het toevoegen van sleutelwaarden aan een opslag met de Azure Portal of de CLI.

Sleutelcode Waarde
TestApp:Instellingen:AchtergrondKleur Wit
TestApp:Instellingen:FontColor Zwart
TestApp:Instellingen:FontSize 40
TestApp:Instellingen:Bericht Gegevens uit Azure-app-configuratie

Een ASP.NET-webtoepassing maken

  1. Start Visual Studio en selecteer Een nieuw project maken.

  2. Selecteer ASP.NET Web Application (.NET Framework) met C# in de lijst met projectsjablonen en druk op Volgende.

  3. Voer in Uw nieuwe project configureren een projectnaam in. Selecteer onder Framework .NET Framework 4.7.2 of hoger. Druk op Maken.

  4. Selecteer webformulieren in Een nieuwe ASP.NET-webtoepassing maken. Druk op Maken.

Gegevens opnieuw laden vanuit app-configuratie

  1. Klik met de rechtermuisknop op uw project en selecteer NuGet-pakketten beheren. Zoek en voeg op het tabblad Bladeren de nieuwste versie van de volgende NuGet-pakketten toe aan uw project.

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity
  2. Open Global.asax.cs bestand en voeg de volgende naamruimten toe.

    using Azure.Identity;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Voeg de volgende statische lidvariabelen toe aan de Global klasse.

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. Voeg een Application_Start methode toe aan de Global klasse. Als de methode al bestaat, voegt u de volgende code eraan toe.

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

    De Application_Start methode wordt aangeroepen bij de eerste aanvraag voor uw webtoepassing. Het wordt slechts eenmaal aangeroepen tijdens de levenscyclus van de toepassing. Daarom is het een goede plek om uw IConfiguration object te initialiseren en gegevens uit App Configuration te laden.

    In de ConfigureRefresh methode roept u de methode aan om de RegisterAll App Configuration-provider te instrueren om de volledige configuratie opnieuw te laden wanneer er een wijziging wordt gedetecteerd in een van de geselecteerde sleutelwaarden (die beginnen met TestApp: en geen label hebben). Zie Aanbevolen procedures voor het vernieuwen van configuratiesvoor meer informatie over het controleren van configuratiewijzigingen.

    De SetRefreshInterval methode geeft de minimale tijd op die moet verstrijken voordat een nieuwe aanvraag wordt ingediend bij App Configuration om te controleren op eventuele configuratiewijzigingen. In dit voorbeeld overschrijft u de standaardverlooptijd van 30 seconden, waarbij u in plaats daarvan een tijd van 5 minuten opgeeft. Het vermindert het potentiële aantal aanvragen dat is gedaan in uw App Configuration-archief.

  5. Voeg een Application_BeginRequest methode toe aan de Global klasse. Als de methode al bestaat, voegt u de volgende code eraan toe.

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

    Als u de ConfigureRefresh methode alleen aanroept, wordt de configuratie niet automatisch vernieuwd. U roept de TryRefreshAsync methode aan het begin van elke aanvraag aan om een vernieuwing aan te geven. Dit ontwerp zorgt ervoor dat uw toepassing alleen aanvragen naar App Configuration verzendt wanneer deze actief aanvragen ontvangt.

    Het aanroepen van TryRefreshAsync is een no-op voordat het geconfigureerde vernieuwingsinterval verstrijkt, zodat de prestatie-impact minimaal is. Wanneer een aanvraag wordt ingediend bij App Configuration, omdat u niet op de taak wacht, wordt de configuratie asynchroon vernieuwd zonder de uitvoering van de huidige aanvraag te blokkeren. De huidige aanvraag ontvangt mogelijk niet de bijgewerkte configuratiewaarden, maar volgende aanvragen doen dit wel.

    Als de aanroep TryRefreshAsync om welke reden dan ook mislukt, blijft uw toepassing de configuratie in de cache gebruiken. Er wordt nog een poging gedaan wanneer het geconfigureerde vernieuwingsinterval opnieuw is verstreken en de TryRefreshAsync aanroep wordt geactiveerd door een nieuwe aanvraag voor uw toepassing.

De meest recente configuratiegegevens gebruiken

  1. Open Default.aspx en vervang de inhoud door de volgende markeringen. Zorg ervoor dat het kenmerk Overgenomen overeenkomt met de naamruimte en de klassenaam van uw toepassing.

    <%@ 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. Open Default.aspx.cs en werk deze bij met de volgende code.

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

De toepassing bouwen en uitvoeren

  1. Stel een omgevingsvariabele in.

    Stel een omgevingsvariabele in met de naam Endpoint aan het eindpunt van uw App Configuration-winkel zoals gevonden onder Overzicht van uw winkel in de Azure portal.

    Als u de Windows-opdrachtprompt gebruikt, voert u de volgende opdracht uit en start u de opdrachtprompt opnieuw om de wijziging door te voeren:

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

    Als u PowerShell gebruikt, voert u de volgende opdracht uit:

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

    Als u macOS of Linux gebruikt, voert u de volgende opdracht uit:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. Start Visual Studio opnieuw zodat de wijziging kan worden doorgevoerd.

  3. Druk op Ctrl+F5 om de webtoepassing te bouwen en uit te voeren.

    Lokaal starten van app

  4. Navigeer in Azure Portal naar Configuration Explorer van uw App Configuration-archief en werk de waarde van de volgende sleutels bij.

    Sleutelcode Waarde
    TestApp:Instellingen:AchtergrondKleur Groen
    TestApp:Instellingen:FontColor Lichtgrijs
    TestApp:Instellingen:Bericht Gegevens van Azure App Configuration - nu met live updates!
  5. Vernieuw de browserpagina om de nieuwe configuratie-instellingen te zien. Mogelijk moet u meer dan één keer vernieuwen om de wijzigingen weer te geven of uw vernieuwingsinterval naar minder dan 5 minuten zetten.

    Lokaal vernieuwen van app

Opmerking

U kunt de voorbeeldcode downloaden die in deze zelfstudie wordt gebruikt vanuit de GitHub-opslagplaats voor Azure App Configuration.

De hulpbronnen opschonen

Als u de resources die in dit artikel zijn gemaakt niet wilt blijven gebruiken, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.

Belangrijk

Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde groep of bronnen verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.

  1. Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
  2. Voer de naam van de resourcegroep in het vak Filteren op naam in.
  3. Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
  4. Selecteer Resourcegroep verwijderen.
  5. U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.

Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.

Volgende stappen

In deze zelfstudie hebt u uw ASP.NET Web Forms-toepassing ingeschakeld om configuratie-instellingen dynamisch te vernieuwen vanuit App Configuration. Ga verder met de volgende zelfstudie voor meer informatie over het inschakelen van dynamische configuratie in een .NET Framework-app:

Als u wilt weten hoe u een door Azure beheerde identiteit gebruikt om de toegang tot App Configuration te stroomlijnen, gaat u verder met de volgende zelfstudie: