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 är utformat av .NET Framework kan appinställningarna dock bara uppdateras när programmet startas om. .NET-providern för appkonfiguration ä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 tutorialen lär du dig följande:

  • Konfigurera din ASP.NET webbapp för att uppdatera konfigurationen som svar på ändringar i ett appkonfigurationsarkiv.
  • Mata in den senaste konfigurationen i begäranden till ditt program.

Förutsättningar

Lägga till nyckelvärden

Lägg till följande nyckelvärden i App Configuration Store och lämna Etikett och Innehållstyp med sina standardvärden. Mer information om hur du lägger till nyckelvärden i en lagring med hjälp av Azure-portalen eller CLI finns i Skapa ett nyckelvärde.

Nyckel Värde
TestApp:Inställningar:BackgroundColor Vit
TestApp:Inställningar:FontColor Svart
TestApp:Inställningar:FontSize 40
TestApp:Settings:Message Data från Azure App Configuration

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 listan med projektmallar och tryck på Nästa.

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

  4. I Skapa ett nytt ASP.NET webbprogram väljer du Webbformulär. 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
    • Azure.Identity
  2. Öppna Global.asax.cs fil och lägg till följande namnområden.

    using Azure.Identity;
    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 =>
        {
            string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
            options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                   // Load all keys that start with `TestApp:` and have no label.
                   .Select("TestApp:*")
                   // Reload configuration if any selected key-values have changed.
                   .ConfigureRefresh(refresh => 
                   {
                       refresh.RegisterAll()
                              .SetRefreshInterval(new TimeSpan(0, 5, 0));
                   });
            _configurationRefresher = options.GetRefresher();
        });
    
        Configuration = builder.Build();
    }
    

    Metoden Application_Start anropas på den första begäran till ditt webbprogram. 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 anropar RegisterAll du metoden för att instruera appkonfigurationsprovidern att läsa in hela konfigurationen igen när den identifierar en ändring i något av de valda nyckelvärdena (de som börjar med TestApp: och som inte har någon etikett). Mer information om hur du övervakar konfigurationsändringar finns i Metodtips för konfigurationsuppdatering.

    Metoden SetRefreshInterval 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 standardtiden för förfallotid på 30 sekunder och anger en tid på 5 minuter i stället. Det minskar det potentiella antalet förfrågningar som görs till App Configuration-lagringstjänsten.

  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 metoden ensam 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 endast skickar begäranden till App Configuration när det aktivt tar emot begäranden.

    Ett anrop till TryRefreshAsync är en no-op innan det konfigurerade uppdateringsintervallet har förflutit, så 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 får kanske inte 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 det konfigurerade uppdateringsintervallet har passerat igen och anropet TryRefreshAsync utlöses av en ny begäran till ditt program.

Använda de senaste konfigurationsdata

  1. Öppna Default.aspx och ersätt innehållet 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 den 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öra programmet

  1. Ange en miljövariabel.

    Ange en miljövariabel med namnet Endpoint till slutpunkten för appkonfigurationsarkivet som finns under Översikt över din butik i Azure-portalen.

    Om du använder Windows-kommandotolken kör du följande kommando och startar om kommandotolken så att ändringen börjar gälla:

    setx Endpoint "<endpoint-of-your-app-configuration-store>"
    

    Om du använder PowerShell kör du följande kommando:

    $Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
    

    Om du använder macOS eller Linux kör du följande kommando:

    export Endpoint='<endpoint-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-portalen går du till Konfigurationsutforskaren i appkonfigurationsarkivet och uppdaterar värdet för följande nycklar.

    Nyckel Värde
    TestApp:Inställningar:BackgroundColor Grön
    TestApp:Inställningar:FontColor Ljusgrå
    TestApp:Settings:Message Data från Azure App Configuration – nu med liveuppdateringar!
  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 uppdateringsintervallet till mindre än 5 minuter.

    Lokal appuppfriskning

Anmärkning

Du kan ladda ned exempelkoden som används i den här självstudien från GitHub-lagringsplatsen för Azure App Configuration.

Rensa resurser

Om du inte vill fortsätta använda resurserna som skapas i den här artikeln tar du bort resursgruppen 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 oavsiktligt tar bort fel resursgrupp eller resurser. 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: