Megosztás a következőn keresztül:


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 az ASP.NET Core-alkalmazás létrehozását 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.

Adatok újrabetöltése az alkalmazáskonfigurációból

  1. Nyisd meg a Program.cs fájlt, és frissítsd a AddAzureAppConfiguration metódust, amelyet a gyorskezdet során adtál hozzá. Az alkalmazáskonfigurációhoz Microsoft Entra-azonosító (ajánlott) vagy kapcsolati sztring használatával csatlakozhat. Az alábbi kódrészlet a Microsoft Entra ID használatát mutatja be.

    Az DefaultAzureCredential használatával hitelesítheti magát az Alkalmazáskonfigurációs áruházban. Amikor a gyors útmutató elvégzéséhez szükséges előfeltételeket teljesíti, már hozzárendelte a hozzáférési engedélyét az Alkalmazáskonfigurációs Adatolvasó szerepkörhöz.

    // Load configuration from Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        options.Connect(new Uri(endpoint), new DefaultAzureCredential())
               // Load all keys that start with `TestApp:` and have no label.
               .Select("TestApp:*", LabelFilter.Null)
               // Reload configuration if any selected key-values have changed.
               .ConfigureRefresh(refreshOptions =>
                   refreshOptions.RegisterAll());
    });
    

    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 a Select 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.

    ConfigureRefresh A metóduson belül meghívja a RegisterAll metódust, amely arra utasítja az alkalmazáskonfiguráció-szolgáltatót, hogy töltse újra újra a teljes konfigurációt, amikor változást észlel a kiválasztott kulcsértékekben (a TestApptól kezdve a címkével nem rendelkezőknél). A konfigurációváltozások figyelésével kapcsolatos további információkért tekintse meg a konfigurációfrissítés ajánlott eljárásait.

    Tipp.

    A metódushoz refreshOptions.SetRefreshInterval 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.

  2. Adja hozzá az Azure App Configuration middleware-t az alkalmazás szolgáltatási gyű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
    // ... ...
    
  3. Hívja meg a UseAzureAppConfiguration metódust. 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
    // ... ...
    

Gyorskezdés során beállította az alkalmazását, hogy az ASP.NET Core opciók mintát használja. Amikor az alkalmazás alapkonfigurációja az Alkalmazáskonfigurációból frissül, az Settings-en keresztül beszerzett erősen típusolt IOptionsSnapshot<T> objektum automatikusan frissül. 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ó middleware figyeli a ConfigureRefresh hívásban frissítéshez regisztrált 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 megadott frissítési időköz 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 csatornában a lehető legkorábban, így egy másik köztes szoftver nem hagyja ki azt az alkalmazásban.

Az alkalmazás helyi létrehozása és futtatása

  1. Ha az alkalmazást a .NET CLI használatával szeretné létrehozni, futtassa a következő parancsot a parancshéjban:

        dotnet build
    
  2. A build sikeres befejezése után futtassa a következő parancsot a webalkalmazás helyi futtatásához:

        dotnet run
    
  3. Nyisson meg egy böngészőablakot, és nyissa meg a kimenetben dotnet run látható URL-címet.

    Gyorsútmutató-alkalmazás helyi indítása

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

  5. Válassza a Konfigurációkezelőt, és frissítse az alábbi kulcsok értékeit.

    Kulcs Érték
    TestApp:Beállítások:Háttérszín zöld
    TestApp:Beállítások:Betűszín világosszürke
    TestApp:Beállítások:Üzenet Adatok Azure-alkalmazás konfigurációból – most élő frissítésekkel!
  6. Frissítse a böngészőt néhányszor. Amikor a frissítési időköz 30 másodperc után eltelik, a lap frissített tartalommal jelenik meg.

    Frissített gyorsútmutató-alkalmazás helyi indítása

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.

  • Amikor a ILoggerFactory meghívásra kerül, a rendszer automatikusan hozzáad egy alapértelmezett services.AddAzureAppConfiguration()-t. Az alkalmazáskonfigurációs szolgáltató ezzel ILoggerFactory hoz létre egy példányt ILogger, amely ezeket a naplókat adja ki. ASP.NET Core alapértelmezés szerint a naplózást használja ILogger , í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 forgatta a kapcsolati karakterláncot, de elfelejtette frissíteni az alkalmazást.

    A naplózást a Debug naplózási szinten engedélyezheti, ha hozzáadja az alábbi példát a appsettings.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.Refreshegyes 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'
    

Az ASP.NET alkalmazásokban a ILogger használata az előnyben részesített módszer, és prioritást élvez mint naplózási forrás, feltéve, hogy létezik ILoggerFactory példány. 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ó: .NET Core és ASP.NET Core naplózása.

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 rendbetétele

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.

  1. Jelentkezzen be az Azure Portalra, és válassza ki az Erőforráscsoportokat.
  2. A Szűrés név szerint 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 lehetőséget.
  5. 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.