Självstudie: Använda dynamisk konfiguration i ett ASP.NET webbprogram (.NET Framework)
Data från App Configuration kan läsas in som appinställningar i ett .NET Framework program. Mer information finns i snabbstarten. Som har utformats av .NET Framework kan appinställningarna dock bara uppdateras när programmet startas om. Den App Configuration .NET-providern är ett .NET Standard-bibliotek. Den stöder cachelagring och uppdatering av konfigurationen dynamiskt utan omstart av programmet. Den här självstudien visar hur du kan implementera dynamiska konfigurationsuppdateringar i ett ASP.NET Web Forms program. Samma teknik gäller för .NET Framework MVC-program.
I den här guiden får du lära dig att:
- Konfigurera din ASP.NET webbapp för att uppdatera konfigurationen som svar på ändringar i ett App Configuration arkiv.
- Mata in den senaste konfigurationen i begäranden till ditt program.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa en kostnadsfritt.
- En App Configuration butik. Skapa en butik.
- Visual Studio
- .NET Framework 4.7.2 eller senare
Lägg till nyckelvärden
Lägg till följande nyckelvärden i App Configuration lagra och lämna Etikett och Innehållstyp med sina standardvärden. Mer information om hur du lägger till nyckelvärden i ett arkiv med hjälp av Azure Portal eller CLI finns i Skapa ett nyckelvärde.
Tangent | Värde |
---|---|
TestApp:Settings:BackgroundColor | Vit |
TestApp:Settings:FontColor | Svart |
TestApp:Settings:FontSize | 40 |
TestApp:Settings:Message | Data från Azure App Configuration |
TestApp:Settings:Sentinel | v1 |
Skapa ett ASP.NET webbprogram
Starta Visual Studio och välj Skapa ett nytt projekt.
Välj ASP.NET webbprogram (.NET Framework) med C# i projektmalllistan och tryck på Nästa.
I Konfigurera det nya projektet anger du ett projektnamn. Under Ramverk väljer du .NET Framework 4.7.2 eller senare. Tryck på Skapa.
I Skapa ett nytt ASP.NET webbprogram väljer du Web Forms. Tryck på Skapa.
Läsa in data på nytt från App Configuration
Högerklicka på projektet och välj Hantera NuGet-paket. På fliken Bläddra söker du efter och lägger till den senaste versionen av följande NuGet-paket i projektet.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Öppna filen Global.asax.cs och lägg till följande namnområden.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Lägg till följande statiska medlemsvariabler i
Global
klassen.public static IConfiguration Configuration; private static IConfigurationRefresher _configurationRefresher;
Lägg till en
Application_Start
metod iGlobal
klassen. Om metoden redan finns lägger du till följande kod i den.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(); }
Metoden
Application_Start
anropas på den första begäran till webbappen. Det anropas bara en gång under programmets livscykel. Därför är det en bra plats att initiera objektetIConfiguration
och läsa in data från App Configuration.ConfigureRefresh
I metoden registreras en nyckel i ditt App Configuration arkiv för ändringsövervakning. ParameternrefreshAll
tillRegister
metoden anger att alla konfigurationsvärden ska uppdateras om den registrerade nyckeln ändras. I det här exemplet är nyckeln TestApp:Settings:Sentinel en sentinel-nyckel som du uppdaterar när du har slutfört ändringen av alla andra nycklar. När en ändring identifieras uppdaterar programmet alla konfigurationsvärden. Den här metoden hjälper till att säkerställa konsekvensen i konfigurationen i ditt program jämfört med att övervaka alla nycklar för ändringar.Metoden
SetCacheExpiration
anger den minsta tid som måste förflutit innan en ny begäran görs till App Configuration för att söka efter konfigurationsändringar. I det här exemplet åsidosätter du standardtid på 30 sekunder och anger en tid på 5 minuter i stället. Det minskar det potentiella antalet begäranden som görs till din App Configuration store.Lägg till en
Application_BeginRequest
metod iGlobal
klassen. Om metoden redan finns lägger du till följande kod i den.protected void Application_BeginRequest(object sender, EventArgs e) { _ = _configurationRefresher.TryRefreshAsync(); }
ConfigureRefresh
Om du anropar enbart metoden uppdateras inte konfigurationen automatiskt. Du anroparTryRefreshAsync
metoden i början av varje begäran för att signalera en uppdatering. Den här designen säkerställer att ditt program bara skickar begäranden till App Configuration när det aktivt tar emot begäranden.Anrop
TryRefreshAsync
är en no-op innan den konfigurerade cachens förfallotid förflutit, så dess prestandapåverkan är minimal. När en begäran görs till App Configuration, eftersom du inte väntar på uppgiften, uppdateras konfigurationen asynkront utan att blockera körningen av den aktuella begäran. Den aktuella begäran kanske inte får de uppdaterade konfigurationsvärdena, men efterföljande begäranden kommer att göra det.Om anropet
TryRefreshAsync
misslyckas av någon anledning fortsätter programmet att använda den cachelagrade konfigurationen. Ett annat försök görs när den konfigurerade cachens förfallotid har passerat igen och anropetTryRefreshAsync
utlöses av en ny begäran till ditt program.
Använda senaste konfigurationsdata
Öppna Default.aspx och ersätt dess innehåll med följande markering. Kontrollera att attributet Inherits matchar namnområdet och klassnamnet för ditt program.
<%@ 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>
Öppna Default.aspx.cs och uppdatera det med följande kod.
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; } } }
Skapa och kör appen
Ange en miljövariabel med namnet ConnectionString till den skrivskyddade nyckelanslutningssträngen som hämtades när du skapade App Configuration store.
Om du använder Windows-kommandotolken kör du följande kommando:
setx ConnectionString "connection-string-of-your-app-configuration-store"
Om du använder Windows PowerShell kör du följande kommando:
$Env:ConnectionString = "connection-string-of-your-app-configuration-store"
Starta om Visual Studio så att ändringen börjar gälla.
Tryck på Ctrl + F5 för att skapa och köra webbprogrammet.
I Azure Portal går du till Konfigurationsutforskaren för App Configuration store och uppdaterar värdet för följande nycklar. Kom ihåg att uppdatera sentinel-nyckeln TestApp:Settings:Sentinel äntligen.
Tangent Värde TestApp:Settings:BackgroundColor Green TestApp:Settings:FontColor LightGray TestApp:Settings:Message Data från Azure App Configuration – nu med live-uppdateringar! TestApp:Settings:Sentinel v2 Uppdatera webbläsarsidan för att visa de nya konfigurationsinställningarna. Du kan behöva uppdatera mer än en gång för att ändringarna ska återspeglas eller ändra cachens förfallotid till mindre än 5 minuter.
Anteckning
Du kan ladda ned exempelkoden som används i den här självstudien från Azure App Configuration GitHub-lagringsplatsen.
Rensa resurser
Om du inte vill fortsätta använda resurserna som skapats i den här artikeln tar du bort den resursgrupp som du skapade här för att undvika avgifter.
Viktigt
Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte tar bort fel resursgrupp eller resurser av misstag. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.
- Logga in på Azure Portal och välj Resursgrupper.
- I rutan Filtrera efter namn anger du namnet på resursgruppen.
- I resultatlistan väljer du resursgruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resursgruppen för att bekräfta och välj Ta bort.
Efter en liten stund tas resursgruppen och alla dess resurser bort.
Nästa steg
I den här självstudien har du aktiverat ditt ASP.NET Web Forms-program för att dynamiskt uppdatera konfigurationsinställningarna från App Configuration. Om du vill lära dig hur du aktiverar dynamisk konfiguration i en .NET Framework app fortsätter du till nästa självstudie:
Om du vill lära dig hur du använder en hanterad Azure-identitet för att effektivisera åtkomsten till App Configuration fortsätter du till nästa självstudie: