Gebruik labels om configuratiewaarden per omgeving op te geven.
Veel toepassingen moeten verschillende configuraties gebruiken voor verschillende omgevingen. Stel dat een toepassing een configuratiewaarde heeft die de verbindingsreeks definieert die moet worden gebruikt voor de back-enddatabase. De toepassingsontwikkelaars gebruiken een andere database dan de database die in productie wordt gebruikt. De database verbindingsreeks die door de toepassing wordt gebruikt, moet worden gewijzigd wanneer de toepassing van ontwikkeling naar productie overgaat.
In Azure-app Configuratie kunt u labels gebruiken om verschillende waarden voor dezelfde sleutel te definiëren. U kunt bijvoorbeeld één sleutel definiëren met verschillende waarden voor ontwikkeling en productie. U kunt opgeven welk label moet worden geladen wanneer u verbinding maakt met App Configuration.
Als u deze functionaliteit wilt demonstreren, wijzigt u de web-app die is gemaakt in quickstart: Een ASP.NET Core-app maken met Azure-app Configuration om verschillende configuratie-instellingen te gebruiken voor ontwikkeling versus productie. Voltooi de quickstart voordat u doorgaat.
Een label opgeven bij het toevoegen van een configuratiewaarde
Ga in Azure Portal naar Configuration Explorer en zoek de toets TestApp:Instellingen:FontColor die u in de quickstart hebt gemaakt. Selecteer het contextmenu en selecteer Vervolgens Waarde toevoegen.
Voer in het scherm Waarde toevoegen een waarde van rood en een label van ontwikkeling in. Laat het inhoudstype leeg. Selecteer Toepassen.
Configuratiewaarden laden met een opgegeven label
Standaard laadt Azure-app Configuration alleen configuratiewaarden zonder label. Als u labels voor uw configuratiewaarden hebt gedefinieerd, moet u de labels opgeven die moeten worden gebruikt bij het maken van verbinding met App Configuration.
In de vorige sectie hebt u een andere configuratiewaarde voor de ontwikkelomgeving gemaakt. U gebruikt de HostingEnvironment.EnvironmentName
variabele om dynamisch te bepalen in welke omgeving de app momenteel wordt uitgevoerd. Zie Meerdere omgevingen gebruiken in ASP.NET Core voor meer informatie.
Voeg een verwijzing toe naar de naamruimte Microsoft.Extensions.Configuration.AzureAppConfiguration om toegang te krijgen tot de klassen KeyFilter en LabelFilter .
using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Laad configuratiewaarden met het label dat overeenkomt met de huidige omgeving door de omgevingsnaam door te geven aan de Select
methode:
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);
});
Belangrijk
In het voorgaande codefragment wordt het hulpprogramma Secret Manager gebruikt om App Configuration verbindingsreeks te laden. Zie quickstart voor Azure-app configuratie met ASP.NET Core voor informatie over het opslaan van de verbindingsreeks met Secret Manager.
De Select
methode wordt twee keer aangeroepen. De eerste keer worden configuratiewaarden zonder label geladen. Vervolgens worden configuratiewaarden geladen met het label dat overeenkomt met de huidige omgeving. Deze omgevingsspecifieke waarden overschrijven alle bijbehorende waarden zonder label. U hoeft geen omgevingsspecifieke waarden voor elke sleutel te definiëren. Als een sleutel geen waarde heeft met een label dat overeenkomt met de huidige omgeving, wordt de waarde zonder label gebruikt.
Testen in verschillende omgevingen
Open het launchSettings.json
bestand onder de Properties
map. Zoek de config
vermelding onder profiles
. Stel in de environmentVariables
sectie de ASPNETCORE_ENVIRONMENT
variabele in op Production
.
Bouw en voer uw toepassing uit met de nieuwe waardenset.
dotnet build
dotnet run
Gebruik een webbrowser om naar http://localhost:5000
. U ziet dat de tekstkleur zwart is.
Bijwerken launchSettings.json
om de ASPNETCORE_ENVIRONMENT
variabele in te stellen op Development
. Voer dotnet run
opnieuw uit.
U ziet dat de tekstkleur nu rood is. Dit komt doordat de toepassing nu gebruikmaakt van de waarde die TestApp:Settings:FontColor
het Development
label heeft. Alle andere configuratiewaarden blijven hetzelfde als hun productiewaarden.