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.

  1. 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>.
  2. A Kulcs mezőbe írja be a TestApp:Gépház:Sentinel nevet. Az Érték mezőbe írja be az 1 értéket. Hagyja üresen a címke és a tartalom típusát .
  3. Válassza az Alkalmazás lehetőséget.

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

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

    A metódusban regisztrálja az ConfigureRefresh alkalmazáskonfigurációs áruház módosításait figyelni kívánt kulcsokat. A refreshAll metódus paramétere Register azt jelzi, hogy a Select 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.

  2. 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
    // ... ...
    
  3. 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

  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.

    Launching quickstart app locally

  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. Ne felejtse el frissíteni a sentinel kulcsot.

    Kulcs Érték
    TestApp:Gépház:BackgroundColor green
    TestApp:Gépház:FontColor lightGray
    TestApp:Gépház:Message Adatok Azure-alkalmazás konfigurációból – most élő frissítésekkel!
    TestApp:Gépház:Sentinel 2
  6. 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.

    Launching updated quickstart app locally

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áskor services.AddAzureAppConfiguration() . 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 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 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'
    

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.

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