Dela via


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

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

  1. Starta Visual Studio och välj Skapa ett nytt projekt.

  2. Välj ASP.NET webbprogram (.NET Framework) med C# i projektmalllistan och tryck på Nästa.

  3. I Konfigurera det nya projektet anger du ett projektnamn. Under Ramverk väljer du .NET Framework 4.7.2 eller senare. Tryck på Skapa.

  4. 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

  1. 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

  2. Öppna filen Global.asax.cs och lägg till följande namnområden.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Lägg till följande statiska medlemsvariabler i Global klassen.

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. Lägg till en Application_Start metod i Global 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 objektet IConfiguration och läsa in data från App Configuration.

    ConfigureRefresh I metoden registreras en nyckel i ditt App Configuration arkiv för ändringsövervakning. Parametern refreshAll till Register 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.

  5. Lägg till en Application_BeginRequest metod i Global 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 anropar TryRefreshAsync 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 anropet TryRefreshAsync utlöses av en ny begäran till ditt program.

Använda senaste konfigurationsdata

  1. Ö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>
    
  2. Ö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

  1. 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"
    
  2. Starta om Visual Studio så att ändringen börjar gälla.

  3. Tryck på Ctrl + F5 för att skapa och köra webbprogrammet.

    Appstart lokalt

  4. 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
  5. 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.

    Appuppdatering lokalt

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.

  1. Logga in på Azure Portal och välj Resursgrupper.
  2. I rutan Filtrera efter namn anger du namnet på resursgruppen.
  3. I resultatlistan väljer du resursgruppens namn för att se en översikt.
  4. Välj Ta bort resursgrupp.
  5. 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: