Oktatóanyag: Dinamikus konfiguráció használata ASP.NET webalkalmazásban (.NET-keretrendszer)

A App Configuration adatai alkalmazásbeállításokként tölthetők be egy .NET-keretrendszer alkalmazásban. További információt a rövid útmutatóban talál. A .NET-keretrendszer által tervezett módon azonban az alkalmazásbeállítások csak az alkalmazás újraindításakor frissíthetők. A App Configuration .NET-szolgáltató egy .NET Standard kódtár. Támogatja a konfiguráció dinamikus gyorsítótárazását és frissítését az alkalmazás újraindítása nélkül. Ez az oktatóanyag bemutatja, hogyan valósíthat meg dinamikus konfigurációs frissítéseket egy ASP.NET Web Forms alkalmazásban. Ugyanez a technika .NET-keretrendszer MVC-alkalmazásokra is vonatkozik.

Eben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Állítsa be a ASP.NET-webalkalmazást úgy, hogy az App Configuration-tároló változásaira reagálva frissítse a konfigurációját.
  • Adja meg a legújabb konfigurációt az alkalmazásnak küldött kérésekben.

Előfeltételek

Kulcsértékek hozzáadása

Adja hozzá a következő kulcsértékeket a App Configuration tárolóhoz, és hagyja meg a Címke és a Tartalomtípus értékét az alapértelmezett értékekkel. Ha többet szeretne tudni arról, hogy miként adhat kulcsértékeket egy áruházhoz a Azure Portal vagy a parancssori felület használatával, tekintse meg a Kulcs-érték létrehozása című témakört.

Kulcs Érték
TestApp:Settings:BackgroundColor Fehér
TestApp:Settings:FontColor Fekete
TestApp:Settings:FontSize 40
TestApp:Beállítások:Üzenet Adatok Azure App Configuration
TestApp:Settings:Sentinel v1

ASP.NET-webalkalmazás létrehozása

  1. Indítsa el a Visual Studiót, és válassza az Új projekt létrehozása lehetőséget.

  2. Válassza ASP.NET webalkalmazást (.NET-keretrendszer) a C# használatával a projektsablonok listájából, és nyomja le a Tovább gombot.

  3. Az Új projekt konfigurálása területen adja meg a projekt nevét. A Keretrendszer területen válassza a .NET-keretrendszer 4.7.2-s vagy újabb verzióját. Nyomja meg a Create (Létrehozás) gombot.

  4. Az Új ASP.NET webalkalmazás létrehozása területen válassza a Web Forms lehetőséget. Nyomja meg a Create (Létrehozás) gombot.

Adatok újrabetöltése App Configuration

  1. Kattintson a jobb gombbal a projektre, és válassza a Manage NuGet Packages (NuGet-csomagok kezelése) lehetőséget. A Tallózás lapon keresse meg és adja hozzá a projekthez az alábbi NuGet-csomag legújabb verzióját.

    Microsoft.Extensions.Configuration.AzureAppConfiguration

  2. Nyissa meg a Global.asax.cs fájlt, és adja hozzá a következő névtereket.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Adja hozzá a következő statikus tagváltozókat az Global osztályhoz.

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. Adjon hozzá egy metódust Application_Start a Global osztályhoz. Ha a metódus már létezik, adja hozzá a következő kódot.

    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();
    }
    

    A Application_Start metódust a webalkalmazás első kérése hívja meg. Ez csak egyszer van meghívva az alkalmazás életciklusa során. Ezért jó hely az objektum inicializálására és az IConfiguration adatok betöltésére App Configuration.

    A metódusban az ConfigureRefresh App Configuration tárolóban lévő kulcs regisztrálva van a változásmonitorozáshoz. A refreshAll metódus paramétere Register azt jelzi, hogy minden konfigurációs értéket frissíteni kell, ha a regisztrált kulcs megváltozik. Ebben a példában a TestApp:Settings:Sentinel kulcs egy sentinel kulcs , amelyet az összes többi kulcs módosítása után frissít. Ha módosítást észlel, az alkalmazás frissíti az összes konfigurációs értéket. Ez a megközelítés segít biztosítani a konfiguráció konzisztenciáját az alkalmazásban, szemben a módosítások összes kulcsának figyelésével.

    A SetCacheExpiration metódus határozza meg azt a minimális időt, amelyet el kell telik, mielőtt új kérést küldenek a App Configuration a konfiguráció módosításainak ellenőrzéséhez. Ebben a példában felülbírálja az alapértelmezett 30 másodperces lejárati időt, és ehelyett 5 percet ad meg. Ez csökkenti a App Configuration tárolóba küldött kérések lehetséges számát.

  5. Adjon hozzá egy metódust Application_BeginRequest a Global osztályhoz. Ha a metódus már létezik, adja hozzá a következő kódot.

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

    Ha csak a metódust ConfigureRefresh hívja meg, az nem fogja automatikusan frissíteni a konfigurációt. A metódust minden TryRefreshAsync kérés elején meghívja, hogy jelezzen egy frissítést. Ez a kialakítás biztosítja, hogy az alkalmazás csak akkor küldjön kéréseket App Configuration, ha aktívan fogad kéréseket.

    A hívás TryRefreshAsync nem működik, mielőtt a konfigurált gyorsítótár lejárati ideje eltelik, így a teljesítményre gyakorolt hatása minimális. Amikor kérést küld a App Configuration, mivel nem várakozik a feladatra, a konfiguráció aszinkron módon frissül az aktuális kérés végrehajtása nélkül. Előfordulhat, hogy az aktuális kérés nem kapja meg a frissített konfigurációs értékeket, de a későbbi kérések igen.

    Ha a hívás TryRefreshAsync bármilyen okból meghiúsul, az alkalmazás továbbra is a gyorsítótárazott konfigurációt fogja használni. Egy másik kísérlet akkor történik, amikor a konfigurált gyorsítótár lejárati ideje ismét lejárt, és a TryRefreshAsync hívást egy új kérés indítja az alkalmazásnak.

A legújabb konfigurációs adatok használata

  1. Nyissa meg a Default.aspx fájlt , és cserélje le a tartalmát az alábbi korrektúrára. Győződjön meg arról, hogy az Inherits attribútum megegyezik az alkalmazás névterével és osztálynevével.

    <%@ 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. Nyissa meg a Default.aspx.cs fájlt , és frissítse az alábbi kóddal.

    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;
            }
        }
    }
    

Az alkalmazás fordítása és futtatása

  1. Állítson be egy ConnectionString nevű környezeti változót a App Configuration tároló létrehozása során beszerzett írásvédett kulcsra kapcsolati sztring.

    Ha a Windows parancssorát használja, futtassa a következő parancsot:

    setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    Ha Windows PowerShell használ, futtassa a következő parancsot:

    $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    
  2. Indítsa újra a Visual Studiót a módosítás érvénybe lépésének engedélyezéséhez.

  3. A webalkalmazás létrehozásához és futtatásához nyomja le a Ctrl + F5 billentyűkombinációt.

    Alkalmazásindítás helyi

  4. A Azure Portal lépjen a App Configuration tároló Konfigurációkezelőjéhez, és frissítse az alábbi kulcsok értékét. Ne felejtse el frissíteni a TestApp:Settings:Sentinel sentinel kulcsot.

    Kulcs Érték
    TestApp:Settings:BackgroundColor Zöld
    TestApp:Settings:FontColor LightGray
    TestApp:Beállítások:Üzenet Adatok Azure App Configuration - most élő frissítésekkel!
    TestApp:Settings:Sentinel v2
  5. Frissítse a böngészőlapot az új konfigurációs beállítások megtekintéséhez. Előfordulhat, hogy többször is frissítenie kell a módosításokat, vagy 5 percnél rövidebbre kell módosítania a gyorsítótár lejárati idejét.

    Alkalmazásfrissítés helyi

Megjegyzés

Az oktatóanyagban használt példakódot letöltheti a Azure App Configuration GitHub-adattárból.

Az erőforrások eltávolítása

Ha nem szeretné tovább használni a cikkben létrehozott erőforrásokat, törölje az itt létrehozott erőforráscsoportot a díjak elkerülése érdekében.

Fontos

Az erőforráscsoport törlése nem vonható vissza. Az erőforráscsoport és a benne lévő összes erőforrás véglegesen törlődik. Győződjön meg arról, hogy nem véletlenül törli a helytelen erőforráscsoportot vagy erőforrásokat. Ha a cikk erőforrásait egy olyan erőforráscsoportban hozta létre, amely más megtartani kívánt erőforrásokat tartalmaz, törölje az egyes erőforrásokat a megfelelő panelről az erőforráscsoport törlése helyett.

  1. Jelentkezzen be a Azure Portal, és válassza az Erőforráscsoportok lehetőséget.
  2. A Szűrés név alapján mezőbe írja be az erőforráscsoport nevét.
  3. Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
  4. Válassza az Erőforráscsoport törlése elemet.
  5. A rendszer az erőforráscsoport törlésének megerősítését kéri. Adja meg az erőforráscsoport nevét a megerősítéshez, majd válassza a Törlés lehetőséget.

Néhány pillanat múlva az erőforráscsoport és annak összes erőforrása törlődik.

Következő lépések

Ebben az oktatóanyagban engedélyezte a ASP.NET Web Forms-alkalmazást, hogy dinamikusan frissítse a konfigurációs beállításokat App Configuration. Ha szeretné megtudni, hogyan engedélyezheti a dinamikus konfigurációt egy .NET-keretrendszer alkalmazásban, folytassa a következő oktatóanyagban:

A következő oktatóanyagból megtudhatja, hogyan egyszerűsítheti le a App Configuration hozzáférését azure-beli felügyelt identitás használatával: