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 Configurazione app .NET è una libreria .NET Standard. Supporta la memorizzazione nella cache e l'aggiornamento dinamico della configurazione senza riavvio dell'applicazione. Questa esercitazione illustra come implementare gli aggiornamenti dinamici della configurazione in un'applicazione Web Forms ASP.NET. La stessa tecnica si applica alle applicazioni MVC di .NET Framework.
In questa esercitazione verranno illustrate le procedure per:
- Configurare l'applicazione Web ASP.NET per aggiornarne la configurazione in risposta alle modifiche in un archivio Configurazione app.
- Inserire la configurazione più recente nelle richieste all'applicazione.
Prerequisiti
- Un account Azure con una sottoscrizione attiva. È possibile crearne uno gratuitamente.
- Archivio Configurazione app. Creare un archivio.
- Visual Studio
- .NET Framework 4.7.2 o versione successiva
Aggiungere i valori chiave
Aggiungere i valori chiave seguenti all'archivio 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, passare a Crea un valore chiave.
Chiave | Valore |
---|---|
TestApp:Settings:BackgroundColor | White |
TestApp:Settings:FontColor | Nero |
TestApp:Settings:FontSize | 40 |
TestApp:Settings:Message | Dati di Configurazione app di Azure |
TestApp:Settings:Sentinel | v1 |
Creare un'applicazione Web ASP.NET
Avviare Visual Studio e selezionare Crea un nuovo progetto.
Selezionare ASP.NET applicazione Web (.NET Framework) con C# dall'elenco dei modelli di progetto e premere Avanti.
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.
In Crea una nuova applicazione Web ASP.NET selezionare Web Forms. Fare clic su Crea.
Ricaricare i dati di Configurazione app
Fare clic con il pulsante destro del mouse sul progetto e scegliere Gestisci pacchetti NuGet. Nella scheda Sfoglia cercare e aggiungere la versione più recente del pacchetto NuGet seguente al progetto.
Microsoft.Extensions.Configuration.AzureAppConfiguration
Aprire il file Global.asax.cs e aggiungere gli spazi dei nomi seguenti.
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Aggiungere le variabili membro statiche seguenti alla
Global
classe.public static IConfiguration Configuration; private static IConfigurationRefresher _configurationRefresher;
Aggiungere un
Application_Start
metodo allaGlobal
classe. Se il metodo esiste già, aggiungere il codice seguente.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(); }
Il
Application_Start
metodo viene chiamato alla prima richiesta all'applicazione Web. Viene chiamato una sola volta durante il ciclo di vita dell'applicazione. Come questo è un buon posto per inizializzare l'oggettoIConfiguration
e caricare i dati da Configurazione app.Nel metodo viene registrata una chiave all'interno dell'archivio
ConfigureRefresh
Configurazione app per il monitoraggio delle modifiche. IlrefreshAll
parametro delRegister
metodo indica che tutti i valori di configurazione devono essere aggiornati se la chiave registrata cambia. In questo esempio, la chiave TestApp:Settings:Sentinel è una chiave sentinel che si aggiorna dopo aver completato la modifica di tutte le altre chiavi. Quando viene rilevata una modifica, l'applicazione aggiorna tutti i valori di configurazione. Questo approccio consente di garantire la coerenza della configurazione nell'applicazione rispetto al monitoraggio di tutte le chiavi per le modifiche.Il
SetCacheExpiration
metodo specifica il tempo minimo che deve essere trascorso prima che venga effettuata una nuova richiesta a Configurazione app per verificare eventuali modifiche di configurazione. In questo esempio si esegue l'override dell'ora di scadenza predefinita di 30 secondi, specificando invece un tempo di 5 minuti. Riduce il numero potenziale di richieste effettuate nell'archivio Configurazione app.Aggiungere un
Application_BeginRequest
metodo allaGlobal
classe. Se il metodo esiste già, aggiungere il codice seguente.protected void Application_BeginRequest(object sender, EventArgs e) { _ = _configurationRefresher.TryRefreshAsync(); }
ConfigureRefresh
La chiamata al metodo da solo non causerà l'aggiornamento automatico della configurazione. Si chiama il metodo all'inizioTryRefreshAsync
di ogni richiesta per segnalare un aggiornamento. Questa progettazione garantisce che l'applicazione invii solo richieste a Configurazione app quando riceve attivamente le richieste.La chiamata
TryRefreshAsync
è no-op prima dell'intervallo di scadenza della cache configurata, pertanto l'impatto sulle prestazioni è minimo. Quando viene effettuata una richiesta per Configurazione app, poiché non si attende l'attività, la configurazione viene aggiornata 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
ha esito negativo per qualsiasi motivo, l'applicazione continuerà a usare la configurazione memorizzata nella cache. Un altro tentativo verrà eseguito quando l'ora di scadenza della cache configurata è passata di nuovo e laTryRefreshAsync
chiamata viene attivata da una nuova richiesta all'applicazione.
Usare i dati di configurazione più recenti
Aprire Default.aspx e sostituirlo con il markup seguente. Assicurarsi che l'attributo Eredita 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>
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
Impostare una variabile di ambiente denominata ConnectionString sulla stringa di connessione di sola lettura ottenuta durante la creazione dell'archivio Configurazione app.
Se si usa il prompt dei comandi di Windows, eseguire il comando seguente:
setx ConnectionString "<connection-string-of-your-app-configuration-store>"
Se si usa Windows PowerShell, eseguire il comando seguente:
$Env:ConnectionString = "<connection-string-of-your-app-configuration-store>"
Riavviare Visual Studio per rendere effettiva la modifica.
Premere CTRL + F5 per compilare ed eseguire l'applicazione Web.
Nella portale di Azure passare a Esplora configurazione dell'archivio Configurazione app e aggiornare il valore delle chiavi seguenti. Ricordarsi di aggiornare la chiave sentinel TestApp:Settings:Sentinel per ultima.
Chiave Valore TestApp:Settings:BackgroundColor Green TestApp:Settings:FontColor Lightgray TestApp:Settings:Message Dati di Configurazione app di Azure - ora con aggiornamenti dinamici TestApp:Settings:Sentinel v2 Aggiornare la pagina del browser per visualizzare le nuove impostazioni di configurazione. Potrebbe essere necessario aggiornare più volte per le modifiche da riflettere o modificare l'ora di scadenza della cache in meno di 5 minuti.
Nota
È possibile scaricare il codice di esempio usato in questa esercitazione dal repository GitHub Configurazione app di Azure.
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.
- Accedere al portale di Azure e selezionare Gruppi di risorse.
- Nella casella Filtra per nome immettere il nome del gruppo di risorse.
- Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
- Selezionare Elimina gruppo di risorse.
- 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
In questa esercitazione è stata abilitata l'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: