Usare le etichette per fornire valori di configurazione per ambiente.

Molte applicazioni richiedono l'uso di configurazioni diverse per ambienti diversi. Si supponga che un'applicazione abbia un valore di configurazione che definisce la stringa di connessione da usare per il database back-end. Gli sviluppatori dell'applicazione usano un database diverso da quello usato nell'ambiente di produzione. La stringa di connessione del database usata dall'applicazione deve cambiare quando l'applicazione passa dall'ambiente di sviluppo a quello di produzione.

In Configurazione app di Azure è possibile usare etichette per definire valori diversi per la stessa chiave. È ad esempio possibile definire una singola chiave con valori diversi per l'ambiente di sviluppo e quello di produzione. È possibile specificare l'etichetta da caricare quando ci si connette a Configurazione app.

Per illustrare questa funzionalità, si modificherà l'app Web creata in Guida di avvio rapido: Creare un'app ASP.NET Core con Configurazione app di Azure per usare impostazioni di configurazione diverse per l'ambiente di sviluppo e quello di produzione. Prima di procedere, completare la guida di avvio rapido.

Specificare un'etichetta quando si aggiunge un valore di configurazione

Nel portale di Azure passare a Esplora configurazioni e trovare la chiave TestApp:Settings:FontColor creata nella guida di avvio rapido. Selezionare il relativo menu di scelta rapida e quindi scegliere Aggiungi valore.

Aggiungi voce di menu Valore

Nella schermata Aggiungi valore immettere red per Valore e Development per Etichetta. Lasciare vuoto il campo Tipo di contenuto. Selezionare Applica.

Caricare i valori di configurazione con un'etichetta specificata

Per impostazione predefinita, Configurazione app di Azure carica solo i valori di configurazione senza etichetta. Se sono state definite etichette per i valori di configurazione, è possibile specificare le etichette da usare quando si esegue la connessione a Configurazione app.

Nella sezione precedente è stato creato un valore di configurazione diverso per l'ambiente di sviluppo. Usare la variabile HostingEnvironment.EnvironmentName per determinare in modo dinamico l'ambiente in cui è attualmente in esecuzione l'app. Per altre informazioni, vedere Usare più ambienti in ASP.NET Core.

Aggiungere un riferimento allo spazio dei nomi Microsoft.Extensions.Configuration.AzureAppConfiguration per accedere alle classi KeyFilter e LabelFilter .

using Microsoft.Extensions.Configuration.AzureAppConfiguration;

Per caricare i valori di configurazione con l'etichetta corrispondente all'ambiente corrente, passare il nome dell'ambiente nel metodo Select:

var builder = WebApplication.CreateBuilder(args);

builder.Configuration.AddAzureAppConfiguration(options =>
    {
            options.Connect(builder.Configuration.GetConnectionString("AppConfig"))
                // Load configuration values with no label
                .Select(KeyFilter.Any, LabelFilter.Null)
                // Override with any configuration values specific to current hosting env
                .Select(KeyFilter.Any, builder.Environment.EnvironmentName);
    });

Importante

Il frammento di codice precedente usa lo strumento Secret Manager per caricare Configurazione app stringa di connessione. Per informazioni sull'archiviazione della stringa di connessione usando Secret Manager, vedere Avvio rapido per Configurazione app di Azure con ASP.NET Core.

Il metodo Select viene chiamato due volte. La prima volta, carica i valori di configurazione senza etichetta. Successivamente, carica i valori di configurazione con l'etichetta corrispondente all'ambiente corrente. Questi valori specifici dell'ambiente eseguono l'override dei valori corrispondenti senza etichetta. Non è necessario definire valori specifici dell'ambiente per ogni chiave. Se una chiave non ha un valore con un'etichetta corrispondente all'ambiente corrente, usa il valore senza etichetta.

Eseguire il test in ambienti diversi

Aprire il file launchSettings.json nella directory Properties. Individuare la voce config in profiles. Nella sezione environmentVariables impostare la variabile ASPNETCORE_ENVIRONMENT su Production.

Con i nuovi valori impostati, compilare ed eseguire l'applicazione.

dotnet build
dotnet run

Usare un Web browser per passare a http://localhost:5000. Si noterà che il colore del carattere è nero.

Applicazione Web in esecuzione con la configurazione di produzione

Aggiornare launchSettings.json per impostare la variabile ASPNETCORE_ENVIRONMENT su Development. Eseguire di nuovo dotnet run.

Si noterà che il colore del carattere è ora rosso. Ciò avviene perché l'applicazione ora usa il valore di TestApp:Settings:FontColor con l'etichetta Development. Tutti gli altri valori di configurazione rimangono uguali ai valori di produzione.

Applicazione Web in esecuzione con la configurazione di sviluppo

Passaggi successivi