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
- Egy Azure-fiók, aktív előfizetéssel. Hozzon létre egyet ingyen.
- Egy App Configuration üzlet. Hozzon létre egy áruházat.
- Visual Studio
- .NET-keretrendszer 4.7.2 vagy újabb verzió
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
Indítsa el a Visual Studiót, és válassza az Új projekt létrehozása lehetőséget.
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.
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.
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
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
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;
Adja hozzá a következő statikus tagváltozókat az
Global
osztályhoz.public static IConfiguration Configuration; private static IConfigurationRefresher _configurationRefresher;
Adjon hozzá egy metódust
Application_Start
aGlobal
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 azIConfiguration
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. ArefreshAll
metódus paramétereRegister
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.Adjon hozzá egy metódust
Application_BeginRequest
aGlobal
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 mindenTryRefreshAsync
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 aTryRefreshAsync
hívást egy új kérés indítja az alkalmazásnak.
A legújabb konfigurációs adatok használata
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>
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
Á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"
Indítsa újra a Visual Studiót a módosítás érvénybe lépésének engedélyezéséhez.
A webalkalmazás létrehozásához és futtatásához nyomja le a Ctrl + F5 billentyűkombinációt.
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 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.
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.
- Jelentkezzen be a Azure Portal, és válassza az Erőforráscsoportok lehetőséget.
- A Szűrés név alapján mezőbe írja be az erőforráscsoport nevét.
- Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
- Válassza az Erőforráscsoport törlése elemet.
- 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: