Oktatóanyag: Dinamikus konfiguráció használata egy ASP.NET Core-alkalmazásban
Ez az oktatóanyag bemutatja, hogyan engedélyezheti a dinamikus konfigurációs frissítéseket egy ASP.NET Core-alkalmazásban. A rövid útmutatókban bemutatott webalkalmazásra épül. Az alkalmazás az alkalmazáskonfiguráció-szolgáltatói kódtárat fogja használni a beépített konfigurációs gyorsítótárazási és frissítési képességekhez. A folytatás előtt először fejezze be a ASP.NET Core-alkalmazás létrehozása az alkalmazáskonfigurációval .
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Állítsa be az alkalmazást úgy, hogy az alkalmazás konfigurációját az alkalmazáskonfigurációs áruház változásaira válaszul frissítse.
- Szúrja be a legújabb konfigurációt az alkalmazásba.
Előfeltételek
Fejezze be a rövid útmutatót: Hozzon létre egy ASP.NET Core-alkalmazást az alkalmazáskonfigurációval.
Sentinel-kulcs hozzáadása
A sentinel kulcs az a kulcs, amelyet az összes többi kulcs módosítása után frissít. Az alkalmazás figyeli a sentinel kulcsot. Ha változás észlelhető, az alkalmazás frissíti az összes konfigurációs értéket. Ez a megközelítés segít biztosítani az alkalmazásban a konfiguráció konzisztenciáját, és csökkenti az Alkalmazáskonfigurációs áruházba érkező kérelmek teljes számát, szemben a módosítások összes kulcsának figyelésével.
- Az Azure Portalon nyissa meg az Alkalmazáskonfigurációs áruházat, és válassza a Configuration Explorer > Kulcs-érték létrehozása lehetőséget>.
- A Kulcs mezőbe írja be a TestApp:Settings:Sentinel nevet. Az Érték mezőbe írja be az 1 értéket. Hagyja üresen a címke és a tartalom típusát .
- Válassza az Alkalmazás lehetőséget.
Adatok újrabetöltése az alkalmazáskonfigurációból
Nyissa meg a Program.cs, és frissítse a
AddAzureAppConfiguration
gyorsútmutató során korábban hozzáadott metódust.// Load configuration from Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(connectionString) // Load all keys that start with `TestApp:` and have no label .Select("TestApp:*", LabelFilter.Null) // Configure to reload configuration if the registered sentinel key is modified .ConfigureRefresh(refreshOptions => refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true)); });
A
Select
metódus az összes olyan kulcsértéket betölti, amelynek a kulcsneve a TestApptal kezdődik, és nincs címkéje. A metódust többször is meghívhatja aSelect
különböző előtagokkal vagy címkékkel rendelkező konfigurációk betöltéséhez. Ha egy alkalmazáskonfigurációs áruházat több alkalmazással is megoszt, ez a módszer segít betölteni az aktuális alkalmazáshoz kapcsolódó konfigurációt ahelyett, hogy mindent betöltenél az áruházból.A metódusban regisztrálja az
ConfigureRefresh
alkalmazáskonfigurációs áruház módosításait figyelni kívánt kulcsokat. ArefreshAll
metódus paramétereRegister
azt jelzi, hogy aSelect
metódus által megadott konfigurációk újratöltődnek, ha a regisztrált kulcs megváltozik.Tipp.
A metódushoz
refreshOptions.SetCacheExpiration
hívással megadhatja a konfigurációfrissítések közötti minimális időt. Ebben a példában az alapértelmezett 30 másodperces értéket használja. Ha csökkenteni szeretné az Alkalmazáskonfigurációs áruházba érkező kérések számát, módosítsa magasabb értékre.Adja hozzá Azure-alkalmazás Configuration köztes szoftvereket az alkalmazás szolgáltatásgyűjteményéhez.
Frissítse Program.cs a következő kóddal.
// Existing code in Program.cs // ... ... builder.Services.AddRazorPages(); // Add Azure App Configuration middleware to the container of services. builder.Services.AddAzureAppConfiguration(); // Bind configuration "TestApp:Settings" section to the Settings object builder.Services.Configure<Settings>(builder.Configuration.GetSection("TestApp:Settings")); var app = builder.Build(); // The rest of existing code in program.cs // ... ...
Hívja meg a metódust
UseAzureAppConfiguration
. Lehetővé teszi, hogy az alkalmazás az Alkalmazáskonfiguráció köztes szoftverrel automatikusan frissítse a konfigurációt.Frissítse Program.cs a következő kóddal.
// Existing code in Program.cs // ... ... var app = builder.Build(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } // Use Azure App Configuration middleware for dynamic configuration refresh. app.UseAzureAppConfiguration(); // The rest of existing code in program.cs // ... ...
A rövid útmutató során beállította, hogy az alkalmazás a ASP.NET Core beállítási mintáját használja. Amikor az alkalmazás mögöttes konfigurációja frissül az Alkalmazáskonfigurációból, a rendszer automatikusan frissíti az erősen gépelt Settings
objektumot, amelyet a rendszer IOptionsSnapshot<T>
beszerez. Vegye figyelembe, hogy nem érdemes a IOptions<T>
dinamikus konfigurációs frissítést használni, mert az nem olvassa be a konfigurációs adatokat az alkalmazás elindítása után.
Kérelemalapú konfigurációfrissítés
A konfiguráció frissítését a webalkalmazáshoz érkező bejövő kérések aktiválják. Nem történik frissítés, ha az alkalmazás tétlen. Ha az alkalmazás aktív, az Alkalmazáskonfiguráció köztes szoftver figyeli a sentinel kulcsot vagy a hívásban ConfigureRefresh
való frissítéshez regisztrált egyéb kulcsokat. A köztes szoftver az alkalmazáshoz érkező minden bejövő kéréskor aktiválódik. A köztes szoftver azonban csak akkor küld kéréseket az alkalmazáskonfiguráció értékének ellenőrzésére, ha a gyorsítótár megadott lejárati ideje lejárt.
- Ha az alkalmazáskonfiguráció kérése sikertelen a változásészleléshez, az alkalmazás továbbra is a gyorsítótárazott konfigurációt fogja használni. A módosítások ellenőrzésére tett új kísérletek rendszeres időközönként történnek, miközben új bejövő kérések érkeznek az alkalmazáshoz.
- A konfigurációfrissítés aszinkron módon történik az alkalmazás bejövő kéréseinek feldolgozása során. Nem blokkolja vagy lassítja a frissítést kiváltó bejövő kérést. Előfordulhat, hogy a frissítést kiváltó kérés nem kapja meg a frissített konfigurációs értékeket, de a későbbi kérések új konfigurációs értékeket kapnak.
- Annak érdekében, hogy a köztes szoftver aktiválódjon, hívja meg a
app.UseAzureAppConfiguration()
metódust a kérési folyamatban, hogy egy másik köztes szoftver ne hagyja ki az alkalmazásban.
Az alkalmazás helyi létrehozása és futtatása
Ha az alkalmazást a .NET CLI használatával szeretné létrehozni, futtassa a következő parancsot a parancshéjban:
dotnet build
A build sikeres befejezése után futtassa a következő parancsot a webalkalmazás helyi futtatásához:
dotnet run
Nyisson meg egy böngészőablakot, és nyissa meg a kimenetben
dotnet run
látható URL-címet.Jelentkezzen be az Azure Portalra. Válassza az Összes erőforrás lehetőséget, és válassza ki a rövid útmutatóban létrehozott Alkalmazáskonfigurációs áruházat.
Válassza a Konfigurációkezelőt, és frissítse az alábbi kulcsok értékeit. Ne felejtse el frissíteni a sentinel kulcsot.
Kulcs Érték TestApp:Settings:BackgroundColor green TestApp:Settings:FontColor lightGray TestApp:Settings:Message Adatok Azure-alkalmazás konfigurációból – most élő frissítésekkel! TestApp:Settings:Sentinel 2 Frissítse a böngészőt néhányszor. Ha a gyorsítótár 30 másodperc után lejár, a lap frissített tartalommal jelenik meg.
Naplózás és figyelés
A naplók konfigurációfrissítéskor jelennek meg, és részletes információkat tartalmaznak az Alkalmazáskonfigurációs áruházból lekért kulcsértékekről és az alkalmazás konfigurációs módosításairól.
A rendszer automatikusan hozzáad egy alapértelmezett értéket
ILoggerFactory
a meghíváskorservices.AddAzureAppConfiguration()
. Az alkalmazáskonfigurációs szolgáltató ezzelILoggerFactory
hoz létre egy példánytILogger
, amely ezeket a naplókat adja ki. ASP.NET Core alapértelmezés szerint a naplózást használjaILogger
, így nem kell további kódmódosításokat végeznie az alkalmazáskonfigurációs szolgáltató naplózásának engedélyezéséhez.A naplók különböző naplózási szinteken jelennek meg. Az alapértelmezett szint a .
Information
Naplószint Leírás Hibakeresés A naplók tartalmazzák az alkalmazás által figyelt kulcsértékek kulcsát és címkéjét az Alkalmazáskonfigurációs áruház módosításaihoz. Az információk azt is tartalmazzák, hogy a kulcs értéke megváltozott-e az alkalmazás által betöltött adatokhoz képest. Engedélyezze a naplókat ezen a szinten az alkalmazás hibaelhárításához, ha a konfigurációs változás nem a várt módon történt. Tájékoztatás A naplók tartalmazzák a konfigurációfrissítés során frissített konfigurációs beállítások kulcsait. A rendszer kihagyja a konfigurációs beállítások értékeit a naplóból, hogy elkerülje a bizalmas adatok kiszivárgását. Ezen a szinten figyelheti a naplókat, hogy az alkalmazás biztosan felvegye a várt konfigurációs módosításokat. Figyelmeztetés A naplók tartalmazzák a konfigurációfrissítés során előforduló hibákat és kivételeket. Az alkalmi előfordulások figyelmen kívül hagyhatók, mert a konfigurációszolgáltató továbbra is a gyorsítótárazott adatokat fogja használni, és legközelebb megkísérli frissíteni a konfigurációt. Ezen a szinten figyelheti a naplókat olyan ismétlődő figyelmeztetések esetén, amelyek potenciális problémákat jelezhetnek. Például elforgatta a kapcsolati sztring, de elfelejtette frissíteni az alkalmazást. A naplózást a napló szintjén engedélyezheti,
Debug
ha hozzáadja az alábbi példát aappsettings.json
fájlhoz. Ez a példa az összes többi naplószintre is vonatkozik."Logging": { "LogLevel": { "Microsoft.Extensions.Configuration.AzureAppConfiguration": "Debug" } }
A naplózási kategória az
Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh
egyes naplók előtt jelenik meg. Íme néhány példanapló minden naplószinten:dbug: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0] Key-value read from App Configuration. Change:'Modified' Key:'ExampleKey' Label:'ExampleLabel' Endpoint:'https://examplestore.azconfig.io' info: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0] Setting updated. Key:'ExampleKey' warn: Microsoft.Extensions.Configuration.AzureAppConfiguration.Refresh[0] A refresh operation failed while resolving a Key Vault reference. Key vault error. ErrorCode:'SecretNotFound' Key:'ExampleKey' Label:'ExampleLabel' Etag:'6LaqgBQM9C_Do2XyZa2gAIfj_ArpT52-xWwDSLb2hDo' SecretIdentifier:'https://examplevault.vault.azure.net/secrets/ExampleSecret'
A használat ILogger
az ASP.NET alkalmazásokban előnyben részesített módszer, és naplózási forrásként van rangsorva, ha egy példány ILoggerFactory
jelen van. Ha ILoggerFactory
azonban nem érhető el, a naplók engedélyezhetők és konfigurálhatók a .NET Core-alkalmazásokra vonatkozó utasítások alapján. További információt a .NET Core-ban és a ASP.NET Core-ban való bejelentkezésről talál.
Feljegyzés
A naplózás akkor érhető el, ha a következő csomagok bármelyikét a 6.0.0-s vagy újabb verziót használja.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Microsoft.Azure.AppConfiguration.AspNetCore
Microsoft.Azure.AppConfiguration.Functions.Worker
Az erőforrások eltávolítása
Ha nem szeretné folytatni a cikkben létrehozott erőforrások használatát, 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 rossz erőforráscsoportot vagy erőforrásokat. Ha a cikk erőforrásait olyan erőforráscsoporton belül 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 az Azure Portalra, és válassza ki az Erőforráscsoportokat.
- A Szűrés név szerint 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 a megerősítéshez az erőforráscsoport nevét, és 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 Core-webalkalmazást, hogy dinamikusan frissítse a konfigurációs beállításokat az Alkalmazáskonfigurációból. Ha szeretné megtudni, hogyan használhat azure-beli felügyelt identitást az alkalmazáskonfigurációhoz való hozzáférés gördülékenyebbé tételéhez, folytassa a következő oktatóanyagban.