Sdílet prostřednictvím


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

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

  1. Spusťte Visual Studio a vyberte Vytvořit nový projekt.

  2. V seznamu šablon projektu vyberte ASP.NET webovou aplikaci (.NET Framework) s jazykem C# a stiskněte Další.

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

  4. V části Vytvořit novou webovou aplikaci ASP.NET vyberte Web Forms. Stiskněte Vytvořit.

Opětovné načtení dat z App Configuration

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

  2. Otevřete soubor Global.asax.cs a přidejte následující obory názvů.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Do třídy přidejte následující proměnné statického členu Global .

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. Application_Start Přidejte do třídy metodu Global . 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é inicializovat IConfiguration 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. Parametr refreshAll metody označuje, že při změně registrovaného Register 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.

  5. Application_BeginRequest Přidejte do třídy metodu Global . 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 metodu TryRefreshAsync 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 a TryRefreshAsync volání se aktivuje novým požadavkem na vaši aplikaci.

Použití nejnovějších konfiguračních dat

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

  1. 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>"
    
  2. Restartujte sadu Visual Studio, aby se změna projevila.

  3. Stisknutím ctrl + F5 sestavte a spusťte webovou aplikaci.

    Místní spuštění aplikace

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

    Místní aktualizace aplikace

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

  1. Přihlaste se k Azure Portal a vyberte Skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název vaší skupiny prostředků.
  3. V seznamu výsledků vyberte název skupiny prostředků, abyste viděli přehled.
  4. Vyberte Odstranit skupinu prostředků.
  5. 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: