Udostępnij za pomocą


Samouczek: używanie konfiguracji dynamicznej w aplikacji internetowej ASP.NET (.NET Framework)

Dane z usługi 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 założeniami programu .NET Framework ustawienia aplikacji mogą być odświeżane tylko po ponownym uruchomieniu aplikacji. Dostawca biblioteki .NET Standard dla usługi App Configuration. Obsługuje ona buforowanie i odświeżanie konfiguracji dynamicznie bez ponownego uruchamiania aplikacji. W tym samouczku pokazano, jak zaimplementować dynamiczne aktualizacje konfiguracji w aplikacji ASP.NET Web Forms. Ta sama technika dotyczy aplikacji MVC programu .NET Framework.

Z tego samouczka dowiesz się, jak wykonywać następujące działania:

  • Skonfiguruj aplikację sieci web ASP.NET, aby zaktualizować jej konfigurację w odpowiedzi na zmiany w sklepie konfiguracyjnym App Configuration.
  • Wstrzykiwanie najnowszej konfiguracji w żądaniach do aplikacji.

Wymagania wstępne

Dodawanie kluczy i wartości

Dodaj następujące wartości klucza do magazynu App Configuration i pozostaw Etykieta oraz Typ zawartości z ich wartościami domyślnymi. Aby uzyskać więcej informacji na temat dodawania parametrów klucz-wartość do magazynu przy użyciu portalu Azure lub interfejsu wiersza polecenia, przejdź do Create a key-value.

Klawisz Wartość
TestApp:Ustawienia:Kolor tła biały
TestApp:Ustawienia:FontColor Czarny
TestApp:Ustawienia:FontSize 40
TestApp:Ustawienia:Wiadomość Dane z konfiguracji aplikacji Azure

Tworzenie aplikacji internetowej ASP.NET

  1. Uruchom program Visual Studio i wybierz pozycję Utwórz nowy projekt.

  2. Wybierz pozycję ASP.NET Aplikacja internetowa (.NET Framework) z listy szablonów projektu i naciśnij przycisk Dalej.

  3. W obszarze Konfigurowanie nowego projektu wprowadź nazwę projektu. W obszarze Framework wybierz pozycję .NET Framework 4.7.2 lub nowszy. Kliknij przycisk Utwórz.

  4. W obszarze Create a new ASP.NET Web Application (Utwórz nową aplikację internetową) wybierz pozycję Web Forms (Formularze sieci Web). Kliknij przycisk Utwórz.

Ponowne ładowanie danych z usługi App Configuration

  1. 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ących pakietów NuGet.

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity (tożsamość azure)
  2. Otwórz plik Global.asax.cs i dodaj następujące przestrzenie nazw.

    using Azure.Identity;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Dodaj do klasy następujące statyczne zmienne Global składowe.

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. Dodaj metodę Application_Start do Global 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 =>
        {
            string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
            options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                   // Load all keys that start with `TestApp:` and have no label.
                   .Select("TestApp:*")
                   // Reload configuration if any selected key-values have changed.
                   .ConfigureRefresh(refresh => 
                   {
                       refresh.RegisterAll()
                              .SetRefreshInterval(new TimeSpan(0, 5, 0));
                   });
            _configurationRefresher = options.GetRefresher();
        });
    
        Configuration = builder.Build();
    }
    

    Metoda Application_Start jest wywoływana przy pierwszym żądaniu do aplikacji internetowej. Jest ona wywoływana tylko raz podczas cyklu życia aplikacji. W związku z tym dobrym miejscem do zainicjowania obiektu IConfiguration i załadowania danych z konfiguracji aplikacji.

    Wewnątrz metody ConfigureRefresh wywołasz metodę RegisterAll, aby poinstruować dostawcę konfiguracji aplikacji o ponownym załadowaniu całej konfiguracji ilekroć wykryje zmianę w dowolnej z wybranych wartości kluczy (rozpoczynające się od TestApp: i bez etykiety). Aby uzyskać więcej informacji na temat monitorowania zmian konfiguracji, zobacz Najlepsze rozwiązania dotyczące odświeżania konfiguracji.

    Metoda SetRefreshInterval określa minimalny czas, który musi upłynąć przed wprowadzeniem nowego żądania do usługi App Configuration, aby sprawdzić, czy nie wprowadzono żadnych zmian konfiguracji. W tym przykładzie zastąpisz domyślny czas wygaśnięcia 30 sekund, określając zamiast tego czas 5 minut. Zmniejsza ona potencjalną liczbę żądań wysyłanych do sklepu App Configuration.

  5. Dodaj metodę Application_BeginRequest do Global 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ływana TryRefreshAsync na początku każdego żądania, aby zasygnalizować odświeżanie. Ten projekt gwarantuje, że aplikacja wysyła żądania tylko do usługi App Configuration, gdy aktywnie odbiera żądania.

    Wywołanie TryRefreshAsync jest wywoływane jako no-op przed upływem skonfigurowanego interwału odświeżania, więc jego wpływ na wydajność jest minimalny. Po wysłaniu żądania do usługi 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 uzyskać 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ć buforowanej konfiguracji. Kolejna próba zostanie podjęta po ponownym przekazaniu skonfigurowanego interwału odświeżania, a TryRefreshAsync wywołanie zostanie wyzwolone przez nowe żądanie do aplikacji.

Korzystanie z najnowszych danych konfiguracji

  1. Otwórz 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>
    
  2. Otwórz 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

  1. Ustaw zmienną środowiskową.

    Ustaw zmienną środowiskową o nazwie Endpoint na punkt końcowy magazynu App Configuration znalezionego w obszarze Przegląd sklepu w witrynie Azure Portal.

    Jeśli używasz wiersza polecenia systemu Windows, uruchom następujące polecenie i uruchom ponownie wiersz polecenia, aby zezwolić na wprowadzenie zmian:

    setx Endpoint "<endpoint-of-your-app-configuration-store>"
    

    Jeśli używasz programu PowerShell, uruchom następujące polecenie:

    $Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
    

    Jeśli używasz systemu macOS lub Linux, uruchom następujące polecenie:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. Uruchom ponownie program Visual Studio, aby umożliwić zastosowanie zmiany.

  3. Naciśnij Ctrl + F5, aby skompilować i uruchomić aplikację internetową.

    Uruchamianie aplikacji lokalnej

  4. W witrynie Azure Portal przejdź do Eksploratora konfiguracji magazynu Usługi App Configuration i zaktualizuj wartość następujących kluczy.

    Klawisz Wartość
    TestApp:Ustawienia:Kolor tła Zielony
    TestApp:Ustawienia:FontColor Jasny szary
    TestApp:Ustawienia:Wiadomość Dane z usługi Azure App Configuration — teraz z aktualizacjami na żywo!
  5. 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ć interwał odświeżania na mniej niż 5 minut.

    Odśwież aplikację lokalną

Uwaga

Przykładowy kod używany w tym samouczku można pobrać z repozytorium GitHub usługi Azure App Configuration.

Uprzątnij zasoby

Jeśli nie chcesz nadal korzystać 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 usuniesz przypadkowo niewłaściwej grupy zasobów lub 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 oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Poproszono Cię 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 w celu dynamicznego odświeżania ustawień konfiguracji z poziomu usługi 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 usługi App Configuration, przejdź do następnego samouczka: