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

Gegevens uit App Configuration kunnen als app-Instellingen in een .NET Framework worden geladen. Zie de snelstart voor meer informatie. Zoals is ontworpen door de .NET Framework, kan de app-Instellingen alleen worden vernieuwd wanneer de toepassing opnieuw wordt gestart. De App Configuration .NET-provider is een .NET Standard-bibliotheek. Het biedt ondersteuning voor het dynamisch in de caching en vernieuwen van de configuratie zonder dat de toepassing opnieuw moet 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 zelfstudie leert u het volgende:

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

Vereisten

Een App Configuration-archief maken

  1. Als u een nieuw App Configuration-archief wilt maken, moet u zich eerst aanmelden bij de Azure-portal. Selecteer in de linkerbovenhoek van de startpagina de optie Een resource maken. Voer in het vak Marketplace doorzoeken App Configuration in en selecteer Invoeren.

    Zoeken naar App Configuration

  2. Selecteer App Configuration in de zoekresultaten en selecteer vervolgens Maken.

    Selecteer Maken

  3. Voer in het deelvenster App Configuration maken de volgende instellingen in:

    Instelling Voorgestelde waarde Beschrijving
    Abonnement Uw abonnement Selecteer het Azure-abonnement dat u wilt gebruiken om App Configuration te testen. Als uw account maar één abonnement heeft, wordt dit automatisch geselecteerd en wordt de lijst Abonnement niet weergegeven.
    Resourcegroep AppConfigTestResources Selecteer of maak een resourcegroep voor de resource van het App Configuration-archief. Deze groep is handig voor het ordenen van meerdere resources die u mogelijk op een bepaald moment wilt verwijderen door resourcegroep te verwijderen. Zie Resourcegroepen gebruiken om Azure-resources te beheren voor meer informatie.
    Resourcenaam Wereldwijd unieke naam Voer een unieke resourcenaam in voor de resource van het App Configuration-archief. De naam moet een tekenreeks zijn van 5 tot 50 tekens en mag alleen cijfers, letters en - bevatten. De naam mag niet beginnen of eindigen met -.
    Locatie US - centraal Gebruik Locatie om de geografische locatie op te geven waar het app-configuratiearchief wordt gehost. Voor de beste prestaties maakt u de resource in dezelfde regio als de andere onderdelen van uw toepassing.
    Prijscategorie Gratis Selecteer de gewenste prijscategorie. Ga voor meer informatie naar de pagina met prijzen voor App Configuration.
  4. Selecteer Beoordelen en maken om de instellingen te valideren.

  5. Selecteer Maken. De implementatie kan enkele minuten duren.

  6. Als de implementatie is voltooid, gaat u naar de resource App Configuration. Selecteer Instellingen > Toegangssleutels. Noteer de verbindingsreeks van de primaire alleen-lezensleutel. U hebt de verbindingsreeks later nodig voor de configuratie van uw toepassing, zodat deze kan communiceren met het App Configuration-archief dat u hebt gemaakt.

  1. Selecteer Operations > Configuration Explorer > > Sleutelwaarde maken om de volgende sleutelwaarden toe te voegen:

    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

    Laat Label en Inhoudstype leeg.

Een webtoepassing ASP.NET 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. Kies Maken.

  4. Selecteer in Een nieuwe ASP.NET webtoepassing maken de Web Forms. Kies 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 naar 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 klasse Global . Als de methode al bestaat, voegt u er de volgende code aan 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 één keer aangeroepen tijdens de levenscyclus van de toepassing. Daarom is het een goede plaats om uw object te initialiseren IConfiguration en gegevens te laden uit App Configuration.

    In de ConfigureRefresh methode wordt een sleutel in uw App Configuration voor wijzigingsbewaking geregistreerd. De refreshAll parameter voor de methode geeft aan dat alle Register configuratiewaarden moeten worden vernieuwd als de geregistreerde sleutel wordt gewijzigd. In dit voorbeeld is de sleutel TestApp:Instellingen:Sentinel een Sentinel-sleutel die u bij werkt nadat u de wijziging van alle andere sleutels hebt voltooid. Wanneer er een wijziging wordt gedetecteerd, vernieuwt uw toepassing alle configuratiewaarden. Deze aanpak zorgt voor de consistentie van de configuratie in uw toepassing in vergelijking met het controleren van alle sleutels op wijzigingen.

    De methode geeft de minimale tijd aan die moet verstreken voordat een nieuwe aanvraag wordt ingediend bij App Configuration om te controleren op SetCacheExpiration configuratiewijzigingen. In dit voorbeeld overschrijven we de standaardverlooptijd van 30 seconden en geeft u in plaats daarvan een tijd van 5 minuten op. Het vermindert het potentiële aantal aanvragen naar uw App Configuration winkel.

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

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

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

    Aanroepen is een no-op voordat de geconfigureerde vervaltijd van de cache is verstreken, zodat de invloed op TryRefreshAsync de prestaties minimaal is. Wanneer een aanvraag wordt ingediend bij App Configuration, omdat u niet op de taak wacht, wordt de configuratie asynchroon vernieuwd zonder dat de uitvoering van de huidige aanvraag wordt geblokkeerd. De huidige aanvraag krijgt mogelijk niet de bijgewerkte configuratiewaarden, maar de volgende aanvragen wel.

    Als de aanroep om een of andere reden mislukt, blijft uw toepassing de configuratie in TryRefreshAsync de cache gebruiken. Er wordt een andere poging gedaan wanneer de geconfigureerde vervaltijd van de cache opnieuw is verstreken en de aanroep wordt geactiveerd door een nieuwe TryRefreshAsync 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 Overnemen 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 bestand 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-connection string die is verkregen tijdens het maken 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. Navigeer Azure Portal de configuratieverkenner van uw App Configuration store en werk de waarde van de volgende sleutels bij. Vergeet niet om de Sentinel-sleutel testApp:Instellingen:Sentinel 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 weer te geven of de verlooptijd van de cache te wijzigen in minder dan 5 minuten.

    App lokaal vernieuwen

Notitie

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

Resources opschonen

Als u niet door wilt gaan met de resources die in dit artikel zijn gemaakt, 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 ingeschakeld om configuratie-instellingen dynamisch te vernieuwen vanuit App Configuration. Als u wilt weten hoe u dynamische configuratie in een .NET Framework inschakelen, gaat u verder met de volgende zelfstudie:

Als u wilt weten hoe u een beheerde Azure-identiteit kunt gebruiken om de toegang tot uw App Configuration, gaat u verder met de volgende zelfstudie: