Kurz: Použití dynamické konfigurace ve webové aplikaci ASP.NET (.NET Framework)
Data z App Configuration je možné načíst jako nastavení aplikace v aplikaci .NET Framework. Další informace najdete v tomto rychlém startu. Jak je však navrženo rozhraním .NET Framework, nastavení aplikace se může aktualizovat pouze při restartování aplikace. Zprostředkovatel App Configuration .NET je knihovna .NET Standard. Podporuje ukládání do mezipaměti a aktualizaci konfigurace dynamicky bez restartování aplikace. V tomto kurzu se dozvíte, jak můžete implementovat aktualizace dynamické konfigurace v aplikaci ASP.NET Web Forms. Stejný postup platí pro aplikace .NET Framework MVC.
V tomto kurzu se naučíte:
- Nastavte webovou aplikaci ASP.NET tak, aby aktualizovala její konfiguraci v reakci na změny v úložišti App Configuration.
- Do požadavků do aplikace vložte nejnovější konfiguraci.
Požadavky
- Účet Azure s aktivním předplatným. Vytvořte si ho zdarma.
- Úložiště App Configuration. Vytvořte úložiště.
- Visual Studio
- .NET Framework 4.7.2 nebo novější
Přidání hodnot klíč-hodnota
Do App Configuration úložiště přidejte následující hodnoty klíče a ponechte popisek a typ obsahu jejich výchozí hodnoty. Další informace o tom, jak přidat hodnoty klíče do úložiště pomocí Azure Portal nebo rozhraní příkazového řádku, najdete v tématu Vytvoření klíč-hodnota.
Klíč | Hodnota |
---|---|
TestApp:Settings:BackgroundColor | White |
TestApp:Settings:FontColor | Black |
TestApp:Settings:FontSize | 40 |
TestApp:Settings:Message | Data z Azure App Configuration |
TestApp:Settings:Sentinel | v1 |
Vytvoření webové aplikace ASP.NET
Spusťte Visual Studio a vyberte Vytvořit nový projekt.
V seznamu šablon projektu vyberte ASP.NET webovou aplikaci (.NET Framework) s jazykem C# a stiskněte Další.
V části Konfigurace nového projektu zadejte název projektu. V části Architektura vyberte .NET Framework 4.7.2 nebo novější. Stiskněte Vytvořit.
V části Vytvořit novou webovou aplikaci ASP.NET vyberte Web Forms. Stiskněte Vytvořit.
Opětovné načtení dat z App Configuration
Klikněte pravým tlačítkem na projekt a vyberte Spravovat balíčky NuGet. Na kartě Procházet vyhledejte a přidejte do projektu nejnovější verzi následujícího balíčku NuGet.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Otevřete soubor Global.asax.cs a přidejte následující obory názvů.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Do třídy přidejte následující proměnné statického členu
Global
.public static IConfiguration Configuration; private static IConfigurationRefresher _configurationRefresher;
Application_Start
Přidejte do třídy metoduGlobal
. Pokud metoda již existuje, přidejte do ní následující kód.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(); }
Metoda je
Application_Start
volána při prvním požadavku na webovou aplikaci. Volá se pouze jednou během životního cyklu aplikace. Proto je vhodné inicializovatIConfiguration
objekt a načíst data z App Configuration.V metodě
ConfigureRefresh
je klíč v úložišti App Configuration zaregistrovaný pro monitorování změn. ParametrrefreshAll
metody označuje, že při změně registrovanéhoRegister
klíče by měly být aktualizovány všechny hodnoty konfigurace. V tomto příkladu je klíč TestApp:Settings:Sentinelklíčem služby Sentinel , který aktualizujete po dokončení změny všech ostatních klíčů. Když se zjistí změna, vaše aplikace aktualizuje všechny hodnoty konfigurace. Tento přístup pomáhá zajistit konzistenci konfigurace v aplikaci v porovnání s monitorováním změn ve všech klíčích.Metoda
SetCacheExpiration
určuje minimální čas, který musí uplynout před provedením nového požadavku na App Configuration ke kontrole změn konfigurace. V tomto příkladu přepíšete výchozí čas vypršení platnosti 30 sekund a místo toho zadáte čas 5 minut. Snižuje se tím potenciální počet požadavků na úložiště App Configuration.Application_BeginRequest
Přidejte do třídy metoduGlobal
. Pokud metoda již existuje, přidejte do ní následující kód.protected void Application_BeginRequest(object sender, EventArgs e) { _ = _configurationRefresher.TryRefreshAsync(); }
ConfigureRefresh
Volání samotné metody nezpůsobí automatickou aktualizaci konfigurace. Zavoláte metoduTryRefreshAsync
na začátku každého požadavku, abyste signalizovali aktualizaci. Tento návrh zajišťuje, že aplikace odesílá požadavky App Configuration pouze tehdy, když je aktivně přijímá.Volání
TryRefreshAsync
je no-op před uplynutím nakonfigurované doby vypršení platnosti mezipaměti, takže jeho dopad na výkon je minimální. Když je proveden požadavek na App Configuration, protože nečekáte na úlohu, konfigurace se aktualizuje asynchronně bez blokování provádění aktuálního požadavku. Aktuální požadavek nemusí získat aktualizované hodnoty konfigurace, ale následné požadavky ano.Pokud se volání
TryRefreshAsync
z nějakého důvodu nezdaří, vaše aplikace bude dál používat konfiguraci uloženou v mezipaměti. Další pokus se provede, když znovu uplyne nakonfigurovaná doba vypršení platnosti mezipaměti aTryRefreshAsync
volání se aktivuje novým požadavkem na vaši aplikaci.
Použití nejnovějších konfiguračních dat
Otevřete Soubor Default.aspx a nahraďte jeho obsah následujícím kódem. Ujistěte se, že atribut Inherits odpovídá oboru názvů a názvu třídy vaší aplikace.
<%@ 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>
Otevřete soubor Default.aspx.cs a aktualizujte ho následujícím kódem.
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; } } }
Sestavení a spuštění aplikace
Nastavte proměnnou prostředí s názvem ConnectionString na připojovací řetězec klíče jen pro čtení získaný při vytváření úložiště App Configuration.
Pokud používáte příkazový řádek windows, spusťte následující příkaz:
setx ConnectionString "connection-string-of-your-app-configuration-store"
Pokud používáte Windows PowerShell, spusťte následující příkaz:
$Env:ConnectionString = "connection-string-of-your-app-configuration-store"
Restartujte sadu Visual Studio, aby se změna projevila.
Stisknutím ctrl + F5 sestavte a spusťte webovou aplikaci.
V Azure Portal přejděte do Průzkumníka konfigurace úložiště App Configuration a aktualizujte hodnotu následujících klíčů. Nezapomeňte nakonec aktualizovat klíč služby Sentinel TestApp:Settings:Sentinel .
Klíč Hodnota TestApp:Settings:BackgroundColor Green TestApp:Settings:FontColor Světlá gray TestApp:Settings:Message Data z Azure App Configuration – teď s živými aktualizacemi! TestApp:Settings:Sentinel v2 Aktualizujte stránku prohlížeče, aby se zobrazila 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.
Poznámka
Ukázkový kód použitý v tomto kurzu si můžete stáhnout z úložiště Azure App Configuration GitHubu.
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 zde vytvořili, abyste se vyhnuli 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 omylem neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste prostředky pro tento článek vytvořili ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna místo odstranění skupiny prostředků.
- Přihlaste se k Azure Portal a 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ů, abyste viděli přehled.
- Vyberte Odstranit skupinu prostředků.
- Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Zadejte název skupiny prostředků, který chcete potvrdit, a vyberte Odstranit.
Po chvíli se skupina prostředků a všechny její prostředky odstraní.
Další kroky
V tomto kurzu jste aplikaci ASP.NET Web Forms povolili dynamickou aktualizaci nastavení konfigurace z App Configuration. Pokud chcete zjistit, jak povolit dynamickou konfiguraci v aplikaci .NET Framework, pokračujte dalším kurzem:
Pokud chcete zjistit, jak používat spravovanou identitu Azure ke zjednodušení přístupu k App Configuration, pokračujte k dalšímu kurzu: