Share via


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

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

In deze zelfstudie leert u het volgende:

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

Vereisten

Sleutelwaarden toevoegen

Voeg de volgende sleutelwaarden toe aan de App Configuration opslaan en laat Label en Inhoudstype de standaardwaarden staan. Ga naar Een sleutelwaarde maken voor meer informatie over het toevoegen van sleutelwaarden aan een archief met behulp van de Azure Portal of de CLI.

Sleutel Waarde
TestApp:Settings:BackgroundColor Wit
TestApp:Settings:FontColor Zwart
TestApp:Settings:FontSize 40
TestApp:Settings:Message Gegevens van Azure App Configuration
TestApp:Settings:Sentinel v1

Een ASP.NET-webtoepassing maken

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

  2. Selecteer ASP.NET webtoepassing (.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 in Een nieuwe ASP.NET-webtoepassing maken de optie Web Forms. Druk op Maken.

Gegevens opnieuw laden vanuit app-configuratie

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

    Microsoft.Extensions.Configuration.AzureAppConfiguration

  2. Open het bestand Global.asax.cs en voeg de volgende naamruimten toe.

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

    De Application_Start methode wordt aangeroepen bij de eerste aanvraag voor uw webtoepassing. Deze 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 wordt een sleutel in uw App Configuration-archief geregistreerd voor wijzigingsbewaking. De refreshAll parameter voor de Register methode geeft aan dat alle configuratiewaarden moeten worden vernieuwd als de geregistreerde sleutel wordt gewijzigd. In dit voorbeeld is de sleutel TestApp:Settings:Sentinel een Sentinel-sleutel die u bijwerkt nadat u de wijziging van alle andere sleutels hebt voltooid. Wanneer er een wijziging wordt gedetecteerd, worden alle configuratiewaarden vernieuwd in uw toepassing. Deze aanpak helpt de consistentie van de configuratie in uw toepassing te garanderen in vergelijking met het bewaken van alle sleutels voor wijzigingen.

    De SetCacheExpiration methode geeft de minimale tijd op die moet zijn verstreken 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 naar uw App Configuration winkel wordt gedaan.

  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 aan het begin van elke aanvraag om een vernieuwing aan te geven. Dit ontwerp zorgt ervoor dat uw toepassing alleen aanvragen verzendt naar App Configuration wanneer deze aanvragen actief ontvangt.

    Aanroepen TryRefreshAsync is een no-op voordat de geconfigureerde verlooptijd van de cache is verstreken, dus de invloed op de prestaties is minimaal. 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 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 de geconfigureerde cacheverlooptijd 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 het 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 met de naam ConnectionString in op de alleen-lezen sleutel connection string verkregen tijdens het maken van de App Configuration store.

    Als u de Windows-opdrachtprompt gebruikt, moet u de volgende opdracht uitvoeren:

    setx ConnectionString "connection-string-of-your-app-configuration-store"
    

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

    $Env:ConnectionString = "connection-string-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.

    App lokaal starten

  4. Ga in de Azure Portal naar De Configuratieverkenner van uw App Configuration-archief en werk de waarde van de volgende sleutels bij. Vergeet niet om de Sentinel-sleutel TestApp:Settings:Sentinel eindelijk bij te werken.

    Sleutel Waarde
    TestApp:Settings:BackgroundColor Green
    TestApp:Settings:FontColor LightGray
    TestApp:Settings:Message Gegevens uit Azure-app-configuratie - nu met live updates!
    TestApp:Settings:Sentinel v2
  5. Vernieuw de browserpagina om de nieuwe configuratie-instellingen te zien. Mogelijk moet u meer dan één keer vernieuwen om de wijzigingen te laten doorgevoerd of de verlooptijd van de cache wijzigen in minder dan 5 minuten.

    App lokaal vernieuwen

Notitie

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

Resources 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 resourcegroep of resources 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 van App Configuration dynamisch te vernieuwen. Als u wilt weten hoe u dynamische configuratie inschakelt in een .NET Framework-app, gaat u verder met de volgende zelfstudie:

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