Condividi tramite


Esercitazione: Usare la configurazione dinamica in un'app .NET Framework

I dati della configurazione applicativa possono essere caricati come impostazioni dell'app in un'app .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'app. Il provider .NET di Configurazione app è una libreria .NET Standard. Supporta la memorizzazione nella cache e l'aggiornamento della configurazione in modo dinamico senza il riavvio dell'app. Questa esercitazione illustra come implementare gli aggiornamenti della configurazione dinamica in un'app console .NET Framework.

In questa esercitazione apprenderai a:

  • Configurare l'app .NET Framework per aggiornarne la configurazione in risposta alle modifiche in un archivio di Configurazione app.
  • Inserire la configurazione più recente nell'applicazione.

Prerequisiti

Aggiungere un valore chiave

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:Message Dati di Configurazione app di Azure

Crea un'applicazione console .NET Framework

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

  2. In Crea un nuovo progetto filtrare in base al tipo di progetto console e selezionare App console (.NET Framework) con C# dall'elenco dei modelli di progetto. 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.

Ricaricare i dati da Configurazione App

  1. 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
    • Azure.Identity
  2. Aprire Program.cs e aggiungere i namespace seguenti.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    using Azure.Identity;
    
  3. Aggiungere due variabili per archiviare gli oggetti correlati alla configurazione.

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. Aggiornare il metodo Main per connettersi a Configurazione app con le opzioni di aggiornamento specificate. Connettersi a Configurazione app usando Microsoft Entra ID (scelta consigliata) o una stringa di connessione.

    Usare DefaultAzureCredential per eseguire l'autenticazione nell'archivio di Configurazione app. Seguire le istruzioni per assegnare le credenziali al ruolo Lettore dati di Configurazione app. Assicurarsi di consentire tempo sufficiente per la propagazione dell'autorizzazione prima di eseguire l'applicazione.

    // Existing code in Program.cs
    // ... ...
    
    static void Main(string[] args)
    {
        var 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(TimeSpan.FromSeconds(10));
                   });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    
    // The rest of existing code in Program.cs
    // ... ...
    

    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 10 secondi a scopo dimostrativo.

  5. Aggiungere un metodo denominato PrintMessage() che attiva un aggiornamento dei dati di configurazione da Configurazione app.

    private static async Task PrintMessage()
    {
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    
        // Wait for the user to press Enter
        Console.ReadLine();
    
        await _refresher.TryRefreshAsync();
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    }
    

    La chiamata al ConfigureRefresh metodo da solo non causerà l'aggiornamento automatico della configurazione. Chiamare il TryRefreshAsync metodo dall'interfaccia IConfigurationRefresher per attivare un aggiornamento. Questa progettazione consiste nell'evitare richieste inviate a Configurazione app anche quando l'applicazione è inattiva. È possibile includere la chiamata TryRefreshAsync dove si considera attiva l'applicazione. Ad esempio, può essere quando si elabora un messaggio in arrivo, un ordine o un'iterazione di un'attività complessa. Può avvenire anche all'interno di un timer se l'applicazione è sempre attiva. In questo esempio si chiama TryRefreshAsync quando si preme INVIO. Si noti che, anche se la chiamata TryRefreshAsync non riesce per qualsiasi motivo, l'applicazione continuerà a usare la configurazione memorizzata nella cache. Verrà eseguito un altro tentativo quando l'intervallo di aggiornamento configurato è passato e la TryRefreshAsync chiamata viene attivata di nuovo dall'attività dell'applicazione. La chiamata a TryRefreshAsync è un no-op prima che l'intervallo di aggiornamento configurato sia trascorso, quindi l'impatto sulle prestazioni è minimo, anche se viene effettuata di frequente.

Compilare ed eseguire l'app in locale

  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'app console.

    Avvio dell'app in locale

  4. Nel portale di Azure passare a Explorer configurazione dell'archivio di Configurazione app e aggiornare il valore della chiave seguente.

    Chiave valore
    TestApp:Settings:Message Dati della configurazione di app Azure - Aggiornato
  5. Tornare all'applicazione in esecuzione e premere INVIO per attivare un aggiornamento, quindi stampare il valore aggiornato nel prompt dei comandi o nella finestra di PowerShell.

    Aggiornamento dell'app in locale

    Nota

    Poiché l'intervallo di aggiornamento è stato impostato su 10 secondi usando il SetRefreshInterval metodo durante la specifica della configurazione per l'operazione di aggiornamento, il valore per l'impostazione di configurazione verrà aggiornato solo se sono trascorsi almeno 10 secondi dall'ultimo aggiornamento per tale impostazione.

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

In questa esercitazione, hai abilitato la tua app .NET Framework per aggiornare dinamicamente le impostazioni di configurazione da App Configuration. Per informazioni su come abilitare la configurazione dinamica in un'applicazione Web ASP.NET (.NET Framework), continuare con l'esercitazione successiva:

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