Samouczek: używanie konfiguracji dynamicznej w aplikacji internetowej ASP.NET (.NET Framework)
Dane z App Configuration można załadować jako ustawienia aplikacji w aplikacji .NET Framework. Aby uzyskać więcej informacji, zobacz przewodnik Szybki start. Jednak zgodnie z projektem .NET Framework ustawienia aplikacji mogą być odświeżane tylko po ponownym uruchomieniu aplikacji. Dostawca platformy .NET App Configuration jest biblioteką .NET Standard. Obsługuje ona buforowanie i odświeżanie konfiguracji dynamicznie bez ponownego uruchamiania aplikacji. W tym samouczku pokazano, jak wdrożyć aktualizacje dynamicznej konfiguracji w aplikacji ASP.NET Web Forms. Ta sama technika dotyczy aplikacji MVC .NET Framework.
Ten samouczek zawiera informacje na temat wykonywania następujących czynności:
- Skonfiguruj aplikację internetową ASP.NET w celu zaktualizowania jej konfiguracji w odpowiedzi na zmiany w magazynie App Configuration.
- Wstrzykiwanie najnowszej konfiguracji w żądaniach do aplikacji.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz go bezpłatnie.
- Magazyn App Configuration. Utwórz magazyn.
- Program Visual Studio
- .NET Framework 4.7.2 lub nowszy
Dodawanie par klucz-wartości
Dodaj następujące wartości klucza do magazynu App Configuration i pozostaw wartości domyślne Etykieta i Typ zawartości. Aby uzyskać więcej informacji na temat dodawania par klucz-wartości do magazynu przy użyciu Azure Portal lub interfejsu wiersza polecenia, przejdź do tematu Tworzenie klucza-wartość.
Klucz | Wartość |
---|---|
TestApp:Settings:BackgroundColor | Biały |
TestApp:Settings:FontColor | Czarnoskórzy |
TestApp:Settings:FontSize | 40 |
TestApp:Settings:Message | Dane z usługi Azure App Configuration |
TestApp:Settings:Sentinel | Wersja 1 |
Tworzenie aplikacji internetowej ASP.NET
Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.
Wybierz pozycję ASP.NET Aplikacja internetowa (.NET Framework) z listy szablonów projektu i naciśnij przycisk Dalej.
W obszarze Konfigurowanie nowego projektu wprowadź nazwę projektu. W obszarze Struktura wybierz pozycję .NET Framework 4.7.2 lub nowszej. Naciśnij przycisk Utwórz.
W obszarze Utwórz nową aplikację internetową ASP.NET wybierz pozycję Web Forms. Naciśnij przycisk Utwórz.
Ponowne ładowanie danych z usługi App Configuration
Kliknij projekt prawym przyciskiem myszy i wybierz polecenie Zarządzaj pakietami NuGet. Na karcie Przeglądaj wyszukaj i dodaj do projektu najnowszą wersję następującego pakietu NuGet.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Otwórz plik Global.asax.cs i dodaj następujące przestrzenie nazw.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Dodaj do klasy następujące statyczne zmienne
Global
składowe.public static IConfiguration Configuration; private static IConfigurationRefresher _configurationRefresher;
Dodaj metodę
Application_Start
doGlobal
klasy . Jeśli metoda już istnieje, dodaj do niej następujący kod.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 jest wywoływana
Application_Start
przy pierwszym żądaniu do aplikacji internetowej. Jest on wywoływany tylko raz podczas cyklu życia aplikacji. W związku z tym warto zainicjowaćIConfiguration
obiekt i załadować dane z App Configuration.W metodzie
ConfigureRefresh
klucz w magazynie App Configuration jest zarejestrowany do monitorowania zmian. ParametrrefreshAll
metodyRegister
wskazuje, że wszystkie wartości konfiguracji powinny zostać odświeżone, jeśli zarejestrowany klucz ulegnie zmianie. W tym przykładzie klucz TestApp:Settings:Sentinel to klucz sentinel aktualizowany po zakończeniu zmiany wszystkich innych kluczy. Po wykryciu zmiany aplikacja odświeża wszystkie wartości konfiguracji. Takie podejście pomaga zapewnić spójność konfiguracji w aplikacji w porównaniu do monitorowania wszystkich kluczy pod kątem zmian.Metoda
SetCacheExpiration
określa minimalny czas, który musi upłynąć, zanim zostanie wykonane nowe żądanie, aby App Configuration sprawdzić, czy nie wprowadzono zmian w konfiguracji. W tym przykładzie zastąpisz domyślny czas wygaśnięcia 30 sekund, określając zamiast tego czas 5 minut. Zmniejsza to potencjalną liczbę żądań wysyłanych do magazynu App Configuration.Dodaj metodę
Application_BeginRequest
doGlobal
klasy . Jeśli metoda już istnieje, dodaj do niej następujący kod.protected void Application_BeginRequest(object sender, EventArgs e) { _ = _configurationRefresher.TryRefreshAsync(); }
ConfigureRefresh
Wywołanie samej metody nie spowoduje automatycznego odświeżenia konfiguracji. Metoda jest wywoływanaTryRefreshAsync
na początku każdego żądania, aby zasygnalizować odświeżanie. Dzięki temu aplikacja wysyła żądania tylko do App Configuration, gdy aktywnie odbiera żądania.Wywołanie
TryRefreshAsync
jest operacją no-op przed upływem skonfigurowanego czasu wygaśnięcia pamięci podręcznej, więc jej wpływ na wydajność jest minimalny. Po wysłaniu żądania do App Configuration, ponieważ nie czekasz na zadanie, konfiguracja jest odświeżona asynchronicznie bez blokowania wykonywania bieżącego żądania. Bieżące żądanie może nie pobrać zaktualizowanych wartości konfiguracji, ale kolejne żądania będą wykonywać.Jeśli wywołanie
TryRefreshAsync
zakończy się niepowodzeniem z jakiegokolwiek powodu, aplikacja będzie nadal używać konfiguracji buforowanej. Kolejna próba zostanie podjęta, gdy skonfigurowany czas wygaśnięcia pamięci podręcznej ponownie upłynął, aTryRefreshAsync
wywołanie zostanie wyzwolone przez nowe żądanie do aplikacji.
Używanie najnowszych danych konfiguracji
Otwórz plik Default.aspx i zastąp jego zawartość następującym znacznikiem. Upewnij się, że atrybut Dziedziczy jest zgodny z przestrzenią nazw i nazwą klasy aplikacji.
<%@ 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>
Otwórz plik Default.aspx.cs i zaktualizuj go przy użyciu następującego kodu.
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; } } }
Kompilowanie i uruchamianie aplikacji
Ustaw zmienną środowiskową o nazwie ConnectionString na parametry połączenia klucza tylko do odczytu uzyskane podczas tworzenia magazynu App Configuration.
Jeśli używasz wiersza polecenia systemu Windows, uruchom następujące polecenie:
setx ConnectionString "<connection-string-of-your-app-configuration-store>"
Jeśli używasz Windows PowerShell, uruchom następujące polecenie:
$Env:ConnectionString = "<connection-string-of-your-app-configuration-store>"
Uruchom ponownie program Visual Studio, aby umożliwić zastosowanie zmiany.
Naciśnij klawisze Ctrl + F5, aby skompilować i uruchomić aplikację internetową.
W Azure Portal przejdź do Eksploratora konfiguracji magazynu App Configuration i zaktualizuj wartość następujących kluczy. Pamiętaj, aby zaktualizować klucz sentinel TestApp:Settings:Sentinel w końcu.
Klucz Wartość TestApp:Settings:BackgroundColor Green (Zielony) TestApp:Settings:FontColor LightGray TestApp:Settings:Message Dane z usługi Azure App Configuration — teraz z aktualizacjami na żywo! TestApp:Settings:Sentinel Wersja 2 Odśwież stronę przeglądarki, aby zobaczyć nowe ustawienia konfiguracji. Może być konieczne odświeżenie więcej niż raz, aby zmiany zostały odzwierciedlone lub zmienić czas wygaśnięcia pamięci podręcznej na mniej niż 5 minut.
Uwaga
Przykładowy kod używany w tym samouczku można pobrać z repozytorium Azure App Configuration GitHub.
Czyszczenie zasobów
Jeśli nie chcesz kontynuować korzystania z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.
Ważne
Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usunięto przypadkowo nieprawidłowej grupy zasobów ani zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób indywidualnie z odpowiedniego okienka zamiast usuwania grupy zasobów.
- Zaloguj się do Azure Portal i wybierz pozycję Grupy zasobów.
- W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
- Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
- Wybierz pozycję Usuń grupę zasobów.
- Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.
Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.
Następne kroki
W tym samouczku włączono aplikację ASP.NET Web Forms, aby dynamicznie odświeżyć ustawienia konfiguracji z App Configuration. Aby dowiedzieć się, jak włączyć konfigurację dynamiczną w aplikacji .NET Framework, przejdź do następnego samouczka:
Aby dowiedzieć się, jak używać tożsamości zarządzanej platformy Azure w celu usprawnienia dostępu do App Configuration, przejdź do następnego samouczka: