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

I dati di Configurazione app possono essere caricati come app Impostazioni in un'app .NET Framework. Per altre informazioni, vedere la guida introduttiva. Tuttavia, come è progettato da .NET Framework, l'app Impostazioni può essere aggiornata solo al riavvio dell'app. Il provider .NET 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 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, vedere Creare un valore chiave.

Chiave valore
TestApp:Impostazioni:Message Dati della configurazione di app Azure

Creare un'app 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. Premere Crea.

Ricaricare i dati di 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

  2. Aprire Program.cs e aggiungere gli spazi dei nomi seguenti.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  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.

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    // Load all keys that start with `TestApp:`.
                    .Select("TestApp:*")
                    // Configure to reload the key 'TestApp:Settings:Message' if it is modified.
                    .ConfigureRefresh(refresh =>
                    {
                        refresh.Register("TestApp:Settings:Message")
                               .SetCacheExpiration(TimeSpan.FromSeconds(10));
                    });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    

    ConfigureRefresh Nel metodo viene registrata una chiave all'interno dell'archivio Configurazione app per il monitoraggio delle modifiche. Il Register metodo dispone di un parametro refreshAll booleano facoltativo che può essere usato per indicare se tutti i valori di configurazione devono essere aggiornati se la chiave registrata cambia. In questo esempio verrà aggiornata solo la chiave TestApp:Impostazioni:Message. Il SetCacheExpiration 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 in cui si considera attiva l'applicazione TryRefreshAsync . Ad esempio, può essere quando si elabora un messaggio in arrivo, un ordine o un'iterazione di un'attività complessa. Può anche essere in un timer se l'applicazione è attiva sempre. 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 è trascorsa la scadenza della cache configurata e la TryRefreshAsync chiamata viene attivata di nuovo dall'attività dell'applicazione. La chiamata TryRefreshAsync è un'operazione no-op prima della scadenza della cache configurata, quindi l'impatto sulle prestazioni è minimo, anche se viene chiamato di frequente.

Compilare ed eseguire l'app in locale

  1. Impostare una variabile di ambiente denominata Connessione ionString sulla chiave di sola lettura stringa di connessione 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"
    
  2. Riavviare Visual Studio per rendere effettiva la modifica.

  3. Premere CTRL+F5 per compilare ed eseguire l'app console.

    App launch local

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

    Chiave valore
    TestApp:Impostazioni: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.

    App refresh local

    Nota

    Poiché la scadenza della cache è stata impostata su 10 secondi usando il metodo SetCacheExpiration quando è stata specificata la configurazione per l'operazione di aggiornamento, il valore dell'impostazione di configurazione verrà aggiornato solo se sono trascorsi almeno 10 secondo dopo l'ultimo aggiornamento di 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 è stata abilitata l'app .NET Framework per aggiornare dinamicamente le impostazioni di configurazione di Configurazione app. 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: