Condividi tramite


Esercitazione: Usare la configurazione dinamica in un'applicazione Web ASP.NET (.NET Framework)

I dati di Configurazione app possono essere caricati come impostazioni app in un'applicazione .NET Framework. Per altre informazioni, vedere la guida introduttiva. Tuttavia, come è progettato da .NET Framework, le impostazioni dell'app possono essere aggiornate solo al riavvio dell'applicazione. Il provider App Configuration .NET è una libreria .NET Standard. Supporta la memorizzazione nella cache e l'aggiornamento della configurazione in modo dinamico senza il riavvio dell'applicazione. Questa esercitazione illustra come implementare gli aggiornamenti della configurazione dinamica in un'applicazione Web Form ASP.NET. La stessa tecnica si applica alle applicazioni MVC di .NET Framework.

In questa esercitazione si apprenderà come:

  • Configurare l'applicazione Web ASP.NET per aggiornare la sua configurazione in risposta alle modifiche in un archivio di configurazione delle app.
  • Inserire la configurazione più recente nelle richieste all'applicazione.

Prerequisiti

Aggiungere coppie chiave-valore

Aggiungere il valore chiave seguente all'archivio di Configurazione app e lasciare Etichetta e Tipo di contenuto con i valori predefiniti. Per altre informazioni su come aggiungere valori chiave a un archivio usando il portale di Azure o l’interfaccia della riga di comando, andare a Creare un valore chiave.

Chiave Valore
TestApp:Settings:BackgroundColor Bianco
TestApp:Settings:FontColor nero
TestApp:Settings:FontSize 40
TestApp:Settings:Message Dati di Configurazione app di Azure

Creare un'applicazione Web ASP.NET

  1. Avviare Visual Studio e selezionare Crea un nuovo progetto.

  2. Selezionare ASP.NET'applicazione Web (.NET Framework) con C# dall'elenco dei modelli di progetto e premere Avanti.

  3. In Configura il nuovo progetto immettere un nome di progetto. In Framework selezionare .NET Framework 4.7.2 o versione successiva. Fare clic su Crea.

  4. In Crea una nuova applicazione Web ASP.NET selezionare Web Form. Fare clic su Crea.

Ricarica i dati dalla configurazione dell'applicazione

  1. Fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet. Nella scheda Sfoglia, cercare e aggiungere ai vostri progetti la versione più recente dei seguenti pacchetti NuGet.

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity
  2. Aprire il file Global.asax.cs e aggiungere i namespace seguenti.

    using Azure.Identity;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Aggiungere le variabili membro statiche seguenti alla Global classe .

    public static IConfiguration Configuration;
    private static IConfigurationRefresher _configurationRefresher;
    
  4. Aggiungere un Application_Start metodo alla Global classe . Se il metodo esiste già, aggiungervi il codice seguente.

    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();
    }
    

    Il Application_Start metodo viene chiamato alla prima richiesta all'applicazione Web. Viene chiamato una sola volta durante il ciclo di vita dell'applicazione. Pertanto, è consigliabile inizializzare l'oggetto IConfiguration e caricare i dati dall'App Configuration.

    All'interno del ConfigureRefresh metodo si chiama il RegisterAll metodo per indicare al provider di Configurazione app di ricaricare l'intera configurazione ogni volta che rileva una modifica in uno dei valori chiave selezionati (quelli che iniziano con TestApp: e non hanno etichetta). Per altre informazioni sul monitoraggio delle modifiche alla configurazione, vedere Procedure consigliate per l'aggiornamento della configurazione.

    Il SetRefreshInterval metodo specifica il tempo minimo che deve trascorrere prima che venga effettuata una nuova richiesta a Configurazione app per verificare la presenza di eventuali modifiche alla configurazione. In questo esempio si esegue l'override dell'ora di scadenza predefinita di 30 secondi, specificando invece un'ora di 5 minuti. Riduce il numero potenziale di richieste effettuate all'archivio di Configurazione app.

  5. Aggiungere un Application_BeginRequest metodo alla Global classe . Se il metodo esiste già, aggiungervi il codice seguente.

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        _ = _configurationRefresher.TryRefreshAsync();
    }
    

    La chiamata al ConfigureRefresh metodo da solo non causerà l'aggiornamento automatico della configurazione. Chiamare il TryRefreshAsync metodo all'inizio di ogni richiesta per segnalare un aggiornamento. Questa progettazione garantisce che l'applicazione invii richieste solo a Configurazione app quando riceve attivamente le richieste.

    La chiamata a TryRefreshAsync è un no-op prima che l'intervallo di aggiornamento configurato sia trascorso, quindi l'impatto sulle prestazioni è minimo. Quando viene effettuata una richiesta a Configurazione App, non dovendo attendere il completamento dell'attività, la configurazione si aggiorna in modo asincrono senza bloccare l'esecuzione della richiesta corrente. La richiesta corrente potrebbe non ottenere i valori di configurazione aggiornati, ma le richieste successive verranno eseguite.

    Se la chiamata TryRefreshAsync non riesce per qualsiasi motivo, l'applicazione continuerà a usare la configurazione memorizzata nella cache. Un altro tentativo verrà eseguito quando l'intervallo di aggiornamento configurato è passato di nuovo e la TryRefreshAsync chiamata viene attivata da una nuova richiesta all'applicazione.

Usare i dati di configurazione più recenti

  1. Aprire Default.aspx e sostituirne il contenuto con il markup seguente. Assicurarsi che l'attributo Inherits corrisponda allo spazio dei nomi e al nome della classe dell'applicazione.

    <%@ 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. Aprire Default.aspx.cs e aggiornarlo con il codice seguente.

    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;
            }
        }
    }
    

Compilare ed eseguire l'applicazione

  1. Impostare una variabile di ambiente.

    Impostare una variabile di ambiente denominata Endpointsull'endpoint dell'archivio di Configurazione app disponibile in Panoramica dello store nel portale di Azure.

    Se si usa il prompt dei comandi di Windows, eseguire il comando seguente e riavviare il prompt per rendere effettiva la modifica:

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

    Se si usa PowerShell, eseguire il comando seguente:

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

    Se si usa macOS o Linux, eseguire il comando seguente:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. Riavviare Visual Studio per rendere effettiva la modifica.

  3. Premere CTRL+F5 per compilare ed eseguire l'applicazione Web.

    Avvio dell'app in locale

  4. Nel portale di Azure passare a Esplora configurazione dell'archivio di Configurazione app e aggiornare il valore delle chiavi seguenti.

    Chiave Valore
    TestApp:Settings:BackgroundColor Verde
    TestApp:Settings:FontColor LightGray
    TestApp:Settings:Message Dati da Azure App Configuration - ora con aggiornamenti in tempo reale!
  5. Aggiornare la pagina del browser per visualizzare le nuove impostazioni di configurazione. Potrebbe essere necessario aggiornare più volte prima che le modifiche siano visibili o modificare l'intervallo di aggiornamento a meno di 5 minuti.

    Aggiornamento dell'app in locale

Annotazioni

È possibile scaricare il codice di esempio utilizzato in questo tutorial dal repository GitHub di Configurazione Azure App.

Pulire le risorse

Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.

Importante

L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.

  1. Accedere al portale di Azure e selezionare Gruppi di risorse.
  2. Nella casella Filtra per nome immettere il nome del gruppo di risorse.
  3. Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
  4. Selezionare Elimina gruppo di risorse.
  5. Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.

Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.

Passaggi successivi

Nella presente esercitazione, hai abilitato la tua applicazione Web Forms ASP.NET per aggiornare dinamicamente le impostazioni di configurazione da Configurazione app. Per informazioni su come abilitare la configurazione dinamica in un'app .NET Framework, passare all'esercitazione successiva:

Per informazioni su come usare un'identità gestita di Azure per semplificare l'accesso a Configurazione app, continuare con l'esercitazione successiva: