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
- Een Azure-account met een actief abonnement. Maak er gratis een.
- Een App Configuration winkel. Maak een winkel.
- Visual Studio
- .NET Framework 4.7.2 of hoger
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
Start Visual Studio en selecteer Een nieuw project maken.
Selecteer ASP.NET webtoepassing (.NET Framework) met C# in de lijst met projectsjablonen en druk op Volgende.
Voer in Uw nieuwe project configureren een projectnaam in. Selecteer onder Framework.NET Framework 4.7.2 of hoger. Druk op Maken.
Selecteer in Een nieuwe ASP.NET-webtoepassing maken de optie Web Forms. Druk op Maken.
Gegevens opnieuw laden vanuit app-configuratie
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
Open het bestand Global.asax.cs en voeg de volgende naamruimten toe.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Voeg de volgende statische lidvariabelen toe aan de
Global
klasse.public static IConfiguration Configuration; private static IConfigurationRefresher _configurationRefresher;
Voeg een
Application_Start
methode toe aan deGlobal
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 uwIConfiguration
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. DerefreshAll
parameter voor deRegister
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.Voeg een
Application_BeginRequest
methode toe aan deGlobal
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 deTryRefreshAsync
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 deTryRefreshAsync
aanroep wordt geactiveerd door een nieuwe aanvraag voor uw toepassing.
De meest recente configuratiegegevens gebruiken
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>
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.
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>"
Start Visual Studio opnieuw zodat de wijziging kan worden doorgevoerd.
Druk op Ctrl + F5 om de webtoepassing te bouwen en uit te voeren.
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 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.
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.
- Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
- Voer de naam van de resourcegroep in het vak Filteren op naam in.
- Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
- Selecteer Resourcegroep verwijderen.
- 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: