Kurz: Použití dynamické konfigurace v ASP.NET Core aplikaci
ASP.NET Core systém konfigurace, který dokáže číst konfigurační data z různých zdrojů. Dokáže dynamicky zpracovávat změny, aniž by to způsobilo restartování aplikace. ASP.NET Core podporuje vazbu nastavení konfigurace na třídy .NET se silnými typy. Vloží je do kódu pomocí , který automaticky znovu načte konfiguraci aplikace při IOptionsSnapshot<T> změně podkladových dat.
Tento kurz ukazuje, jak můžete do kódu implementovat dynamické aktualizace konfigurace. Vychází z webové aplikace představené v rychlých startech. Než budete pokračovat, dokončete nejprve vytvoření ASP.NET Core aplikace App Configuration.
Kroky v tomto kurzu můžete provést v libovolném editoru kódu. Visual Studio Code je skvělá možnost, která je k dispozici na platformách Windows, macOS a Linux.
V tomto kurzu se naučíte:
- Nastavte aplikaci tak, aby v reakci na změny v App Configuration store.
- Vloží nejnovější konfiguraci do kontrolerů vaší aplikace.
Požadavky
Pokud chcete tento kurz provést, nainstalujte .NET Core SDK.
Pokud ještě nemáte předplatné Azure,vytvořte si bezplatný účet před tím, než začnete.
Než budete pokračovat, dokončete nejprve vytvoření ASP.NET Core aplikace App Configuration.
Přidání klíče sentinelu
Klíč sentinelu je speciální klíč, který aktualizujete po dokončení změny všech ostatních klíčů. Vaše aplikace monitoruje klíč sentinelu. Při zjištění změny aplikace aktualizuje všechny hodnoty konfigurace. Tento přístup pomáhá zajistit konzistenci konfigurace v aplikaci a snižuje celkový počet požadavků provedených na App Configuration v porovnání s monitorováním všech klíčů pro změny.
- V Azure Portal vyberte Průzkumník konfigurace a > vytvořit > klíč-hodnota.
- Jako Klíč zadejte TestApp:Nastavení:Sentinel. Jako Hodnotu zadejte 1. Pole Popisek a Typ obsahu ponechte prázdné.
- Vyberte Použít.
Poznámka
Pokud klíč sentinelu nepotřebujete, musíte ručně zaregistrovat každý klíč, který chcete monitorovat.
Opětovné načtení dat z App Configuration
Přidejte odkaz na
Microsoft.Azure.AppConfiguration.AspNetCoreNuGet spuštěním následujícího příkazu:dotnet add package Microsoft.Azure.AppConfiguration.AspNetCoreOtevřete soubor Program.cs a aktualizujte
CreateWebHostBuildermetodu a přidejteconfig.AddAzureAppConfiguration()metodu .public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => webBuilder.ConfigureAppConfiguration((hostingContext, config) => { var settings = config.Build(); config.AddAzureAppConfiguration(options => { options.Connect(settings["ConnectionStrings:AppConfig"]) .ConfigureRefresh(refresh => { refresh.Register("TestApp:Settings:Sentinel", refreshAll: true) .SetCacheExpiration(new TimeSpan(0, 5, 0)); }); }); }) .UseStartup<Startup>());V
ConfigureRefreshmetodě zaregistrujete klíče v rámci App Configuration úložiště, které chcete monitorovat na změny. ParametrrefreshAllmetody indikuje, že pokud se zaregistrovaný klíč změní, všechny konfigurační hodnoty seRegistermají aktualizovat. Metoda určuje minimální dobu, která musí uplynout před provedením nového požadavku na App Configuration kontrolu všechSetCacheExpirationzměn konfigurace. V tomto příkladu přepíšete výchozí dobu vypršení platnosti 30 sekund a místo toho zadáte dobu 5 minut. Tím se snižuje potenciální počet požadavků na vaše App Configuration úložiště.Poznámka
Pro účely testování můžete snížit dobu vypršení platnosti aktualizace mezipaměti.
K aktivaci aktualizace konfigurace použijete App Configuration middleware. Postup uvidíte v pozdějším kroku.
Do adresáře Controllers přidejte soubor Nastavení.cs, který definuje a implementuje novou
Settingstřídu. Nahraďte obor názvů názvem vašeho projektu.namespace TestAppConfig { public class Settings { public string BackgroundColor { get; set; } public long FontSize { get; set; } public string FontColor { get; set; } public string Message { get; set; } } }Otevřete Soubor Startup.cs a aktualizujte
ConfigureServicesmetodu . VolánímConfigure<Settings>metody vytvořte vazbu konfiguračních dat keSettingstřídě . VolánímAddAzureAppConfigurationmetody App Configuration do kolekce služby vaší aplikace přidejte další součásti.public void ConfigureServices(IServiceCollection services) { services.Configure<Settings>(Configuration.GetSection("TestApp:Settings")); services.AddControllersWithViews(); services.AddAzureAppConfiguration(); }Aktualizujte
Configuremetodu a přidejte voláníUseAzureAppConfiguration. Umožňuje vaší aplikaci používat App Configuration middleware k automatickému zpracování aktualizací konfigurace.public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } // Add the following line: app.UseAzureAppConfiguration(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); }Poznámka
Tento App Configuration monitoruje klíč sentinelu nebo jakékoli jiné klíče, které jste zaregistrovali k aktualizaci ve volání
ConfigureRefreshv předchozím kroku. Middleware se aktivuje při každém příchozím požadavku do vaší aplikace. Middleware však bude odesílat požadavky na kontrolu hodnoty pouze v App Configuration, když uplynula nastavená doba vypršení platnosti mezipaměti. Při zjištění změny buď aktualizuje celou konfiguraci, pokud se použije klíč sentinelu, nebo aktualizuje pouze hodnoty zaregistrovaných klíčů.- Pokud požadavek na App Configuration pro detekci změn selže, vaše aplikace bude dál používat konfiguraci v mezipaměti. Další kontrola bude provedena po uplynutí nakonfigurovaného času vypršení platnosti mezipaměti znovu a nové příchozí požadavky na vaši aplikaci.
- Aktualizace konfigurace probíhá asynchronně při zpracování příchozích požadavků vaší aplikace. Příchozí požadavek, který aktualizaci aktivoval, se tím nezablokuje ani nezpomalí. Požadavek, který aktualizaci aktivoval, nemusí získat aktualizované hodnoty konfigurace, ale další požadavky to budou dělat.
- Pokud chcete zajistit aktivaci middlewaru, volejte v kanálu požadavku co nejdříve, aby ho ve vaší aplikaci nezkrátí další
app.UseAzureAppConfiguration()middleware.
Použití nejnovějších konfiguračních dat
Otevřete soubor HomeController.cs v adresáři Controllers a přidejte odkaz na
Microsoft.Extensions.Optionsbalíček.using Microsoft.Extensions.Options;Aktualizujte
HomeControllertřídu na příjem prostřednictvímSettingsinjektáže závislostí a využijte její hodnoty.public class HomeController : Controller { private readonly Settings _settings; private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger, IOptionsSnapshot<Settings> settings) { _logger = logger; _settings = settings.Value; } public IActionResult Index() { ViewData["BackgroundColor"] = _settings.BackgroundColor; ViewData["FontSize"] = _settings.FontSize; ViewData["FontColor"] = _settings.FontColor; ViewData["Message"] = _settings.Message; return View(); } // ... }Tip
Další informace o vzorech možností při čtení hodnot konfigurace najdete v tématu Vzory možností v ASP.NET Core.
Otevřete soubor Index.cshtml v adresáři Views > Home a nahraďte jeho obsah následujícím skriptem:
<!DOCTYPE html> <html lang="en"> <style> body { background-color: @ViewData["BackgroundColor"] } h1 { color: @ViewData["FontColor"]; font-size: @ViewData["FontSize"]px; } </style> <head> <title>Index View</title> </head> <body> <h1>@ViewData["Message"]</h1> </body> </html>
Místní sestavení a spuštění aplikace
Pokud chcete sestavit aplikaci pomocí .NET Core CLI, spusťte v příkazovém prostředí následující příkaz:
dotnet buildPo úspěšném dokončení sestavení spusťte následující příkaz, který spustí webovou aplikaci místně:
dotnet runOtevřete okno prohlížeče a přejděte na adresu URL zobrazenou ve
dotnet runvýstupu.
Přihlaste se k webu Azure Portal. Vyberte Všechny prostředky a vyberte instanci App Configuration, kterou jste vytvořili v rychlém startu.
Vyberte Průzkumníka konfigurace a aktualizujte hodnoty následujících klíčů. Nezapomeňte nakonec aktualizovat klíč sentinelu.
Klíč Hodnota TestApp:Nastavení:BackgroundColor green TestApp:Nastavení:FontColor lightGray TestApp:Nastavení:Message Data z Azure App Configuration – nyní s živými aktualizacemi! TestApp:Nastavení:Sentinel 2 Aktualizujte stránku prohlížeče a zobrazte nová nastavení konfigurace. Možná budete muset provést aktualizaci více než jednou, aby se změny projevily, nebo změnit dobu vypršení platnosti mezipaměti na méně než 5 minut.

Vyčištění prostředků
Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste tady vytvořili, abyste předešli poplatkům.
Důležité
Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste vytvořili prostředky pro tento článek v rámci skupiny prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte všechny prostředky jednotlivě z příslušného podokna, místo aby se odstranila skupina prostředků.
- Přihlaste se k Azure Portala vyberte skupiny prostředků.
- Do pole filtrovat podle názvu zadejte název vaší skupiny prostředků.
- V seznamu výsledků vyberte název skupiny prostředků, aby se zobrazil přehled.
- Vyberte Odstranit skupinu prostředků.
- Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Zadejte název vaší skupiny prostředků, který chcete potvrdit, a vyberte Odstranit.
Po chvíli se odstraní skupina prostředků a všechny její prostředky.
Další kroky
V tomto kurzu jste povolili webové aplikaci ASP.NET Core dynamicky aktualizovat nastavení konfigurace z App Configuration. Informace o tom, jak pomocí spravované identity Azure zjednodušit přístup k App Configuration, najdete v dalším kurzu.