Quickstart: functievlaggen toevoegen aan een ASP.NET Core-app

In deze quickstart maakt u een end-to-end-implementatie van functiebeheer in een ASP.NET Core-app met behulp van Azure App Configuration. U gebruikt de App Configuration-service om al uw functievlaggen centraal op te slaan en hun status te bepalen.

De functiebeheerbibliotheken van .NET Core breiden het framework uit met uitgebreide ondersteuning voor functievlaggen. Deze bibliotheken worden boven op het .NET Core-configuratiesysteem gebouwd. Ze kunnen naadloos worden geïntegreerd met App Configuration via de configuratieprovider voor .NET Core.

Vereisten

Een App Configuration-archief maken

  1. Als u een nieuw App Configuration-archief wilt maken, moet u zich eerst aanmelden bij de Azure-portal. Selecteer in de linkerbovenhoek van de startpagina de optie Een resource maken. Voer in het vak Marketplace doorzoeken App Configuration in en selecteer Invoeren.

    Zoeken naar App Configuration

  2. Selecteer App Configuration in de zoekresultaten en selecteer vervolgens Maken.

    Selecteer Maken

  3. Voer in het deelvenster App Configuration maken de volgende instellingen in:

    Instelling Voorgestelde waarde Beschrijving
    Abonnement Uw abonnement Selecteer het Azure-abonnement dat u wilt gebruiken om App Configuration te testen. Als uw account maar één abonnement heeft, wordt dit automatisch geselecteerd en wordt de lijst Abonnement niet weergegeven.
    Resourcegroep AppConfigTestResources Selecteer of maak een resourcegroep voor de resource van het App Configuration-archief. Deze groep is handig voor het ordenen van meerdere resources die u mogelijk op een bepaald moment wilt verwijderen door resourcegroep te verwijderen. Zie Resourcegroepen gebruiken om Azure-resources te beheren voor meer informatie.
    Resourcenaam Wereldwijd unieke naam Voer een unieke resourcenaam in voor de resource van het App Configuration-archief. De naam moet een tekenreeks zijn van 5 tot 50 tekens en mag alleen cijfers, letters en - bevatten. De naam mag niet beginnen of eindigen met -.
    Locatie US - centraal Gebruik Locatie om de geografische locatie op te geven waar het app-configuratiearchief wordt gehost. Voor de beste prestaties maakt u de resource in dezelfde regio als de andere onderdelen van uw toepassing.
    Prijscategorie Gratis Selecteer de gewenste prijscategorie. Ga voor meer informatie naar de pagina met prijzen voor App Configuration.
  4. Selecteer Beoordelen en maken om de instellingen te valideren.

  5. Selecteer Maken. De implementatie kan enkele minuten duren.

  6. Als de implementatie is voltooid, gaat u naar de resource App Configuration. Selecteer Instellingen > Toegangssleutels. Noteer de verbindingsreeks van de primaire alleen-lezensleutel. U hebt de verbindingsreeks later nodig voor de configuratie van uw toepassing, zodat deze kan communiceren met het App Configuration-archief dat u hebt gemaakt.

  1. Selecteer Bewerkingen > Functiebeheerder > Toevoegen om een functievlag met de naam Beta toe te voegen.

    Functievlag met de naam Beta inschakelen

    Laat Label nog leeg. Selecteer Toepassen om de nieuwe functievlag op te slaan.

Een ASP.NET Core-web-app maken

Gebruik de opdrachtregelinterface (CLI) van .NET Core om een nieuw project van ASP.NET Core MVC te maken. Het voordeel van de CLI van .NET Core ten opzichte van Visual Studio is dat de CLI van .NET Core beschikbaar is voor Windows, macOS en Linux.

Voer de volgende opdracht uit om een ASP.NET Core MVC-project te maken in een nieuwe TestFeatureFlags-map:

dotnet new mvc --no-https --output TestFeatureFlags

Secret Manager toevoegen

Het hulpprogramma Secret Manager slaat gevoelige gegevens voor ontwikkeltaken op buiten de projectstructuur. Deze aanpak voorkomt dat er per ongeluk appgeheimen worden gedeeld in de broncode. Voer de volgende stappen uit om het gebruik van Secret Manager in het ASP.NET Core-project mogelijk te maken:

Ga naar de hoofdmap van het project en voer de volgende opdracht uit om de opslag van geheimen in het project in te schakelen:

dotnet user-secrets init

Een UserSecretsId-element dat een GUID bevat wordt toegevoegd aan het bestand .csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">
    
    <PropertyGroup>
        <TargetFramework>net5.0</TargetFramework>
        <UserSecretsId>79a3edd0-2092-40a2-a04d-dcb46d5ca9ed</UserSecretsId>
    </PropertyGroup>

</Project>

Tip

Raadpleeg Veilige opslag van app-geheimen in ontwikkeling in ASP.NET Core voor meer informatie over Secret Manager.

Verbinding maken met een App Configuration-archief

  1. Installeer de NuGet-pakketten Microsoft.Azure.AppConfiguration.AspNetCore en Microsoft.FeatureManagement.AspNetCore door de volgende opdrachten uit te voeren:

    dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
    
    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Voer de volgende opdracht uit in dezelfde map als waar het .csproj-bestand zich bevindt. De opdracht maakt gebruik van Secret Manager voor het opslaan van een geheim met de naam ConnectionStrings:AppConfig, waarin de verbindingstekenreeks voor uw App Configuration-opslagplaats wordt opgeslagen. Vervang de tijdelijke aanduiding <your_connection_string> door de verbindingstekenreeks van uw App Configuration-opslagplaats. U vindt de verbindingsreeks onder Toegangssleutels in Azure Portal.

    dotnet user-secrets set ConnectionStrings:AppConfig "<your_connection_string>"
    

    Secret Manager wordt alleen gebruikt om de web-app lokaal te testen. Wanneer de app is geïmplementeerd naar Azure App Service, gebruikt u een toepassingsinstelling Verbindingsreeksen in App Service in plaats van Secret Manager om de verbindingsreeks op te slaan.

    Open dit geheim met behulp van de .NET Core-configuratie-API. Een dubbele punt (:) werkt in de configuratienaam met de configuratie-API op alle ondersteunde platforms. Zie Configuratiesleutels en -waarden voor meer informatie.

  3. Werk in Program.cs de methode CreateWebHostBuilder bij voor het gebruik van App Configuration door de methode AddAzureAppConfiguration aan te roepen.

    Belangrijk

    CreateHostBuilder wordt vervangen door CreateWebHostBuilder in .NET Core 3.x. Selecteer de juiste syntaxis op basis van uw omgeving.

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
                webBuilder.ConfigureAppConfiguration(config =>
                {
                    var settings = config.Build();
                    var connection = settings.GetConnectionString("AppConfig");
                    config.AddAzureAppConfiguration(options =>
                        options.Connect(connection).UseFeatureFlags());
                }).UseStartup<Startup>());
    

    Door de voorgaande wijziging is de configuratieprovider voor App Configuration geregistreerd bij de .NET Core-Configuratie-API.

  4. Voeg in Startup.cs verwijzingen toe naar functiebeheer van .NET Core:

    using Microsoft.FeatureManagement;
    
  5. Werk de methode Startup.ConfigureServices bij om ondersteuning voor functievlaggen toe te voegen door de methode AddFeatureManagement aan te roepen. U kunt eventueel ook een filter toevoegen dat moet worden gebruikt met functievlaggen door AddFeatureFilter<FilterType>() aan te roepen:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
        services.AddFeatureManagement();
    }
    
  6. Voeg een MyFeatureFlags.cs-bestand toe aan de hoofdmap van het project met de volgende code:

    namespace TestFeatureFlags
    {
        public enum MyFeatureFlags
        {
            Beta
        }
    }
    
  7. Voeg een BetaController.cs-bestand toe aan de map Controllers met de volgende code:

    using Microsoft.AspNetCore.Mvc;
    using Microsoft.FeatureManagement;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace TestFeatureFlags.Controllers
    {
        public class BetaController: Controller
        {
            private readonly IFeatureManager _featureManager;
    
            public BetaController(IFeatureManagerSnapshot featureManager) =>
                _featureManager = featureManager;
    
            [FeatureGate(MyFeatureFlags.Beta)]
            public IActionResult Index() => View();
        }
    }
    
  8. In Views/_ViewImports.cshtml moet u het hulpprogramma voor functiebeheer registreren met behulp van een @addTagHelper-instructie:

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    Met de voorgaande code kan de <feature> Tag Helper worden gebruikt in de .cshtml-bestanden van het project.

  9. Open _Layout.cshtml in de map Weergaven\Gedeeld. Zoek de streepjescode <nav> onder <body> > <header>. Voeg een nieuwe tag <feature> in tussen de navigatiebalkitems Start en Privacy, zoals wordt weergegeven in de gemarkeerde regels hieronder.

    ms.lasthandoff: 03/29/2021
    ms.locfileid: "98663009"
    ---
    ```html
     //...
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">TestFeatureFlags</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
            aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
                    </li>
                    <feature name="Beta">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-controller="Beta" asp-action="Index">Beta</a>
                    </li>
                    </feature>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
    
  10. Maak een map Views/Beta en een Index.cshtml-bestand met de volgende opmaak:

    @{
        ViewData["Title"] = "Beta Home Page";
    }
    
    <h1>This is the beta website.</h1>
    

De app lokaal compileren en uitvoeren

  1. Compileer de app met behulp van de .NET Core CLI door de volgende opdracht uit te voeren in de opdrachtshell:

    dotnet build
    
  2. Nadat het bouwen is voltooid, voert u de volgende opdracht uit om de web-app lokaal uit te voeren:

    dotnet run
    
  3. Open een browservenster en ga naar http://localhost:5000. Dit is de standaard-URL voor de web-app die lokaal wordt gehost. Als u werkt in Azure Cloud Shell, selecteert u de knop Web-preview gevolgd door Configureren. Selecteer poort 5000 wanneer hierom wordt gevraagd.

    De knop Web-preview zoeken

    In uw browser wordt een pagina weergegeven die vergelijkbaar is met de onderstaande afbeelding.

    Lokale snelstart-app voor wijziging

  4. Meld u aan bij de Azure-portal. Selecteer Alle resources en selecteer de instantie van het App Configuration-archief dat u in de quickstart hebt gemaakt.

  5. Selecteer Functiebeheer.

  6. Schakel de vlag Bèta in door het selectievakje onder Ingeschakeld aan te vinken.

  7. Ga terug naar de opdrachtshell. Annuleer het actieve dotnet-proces door op CTRL + Cte drukken. Start de app opnieuw op met dotnet run.

  8. Vernieuw de browserpagina om de nieuwe configuratie-instellingen te zien.

    Lokale snelstart-app na wijziging

Resources opschonen

Als u niet door wilt gaan met de resources die in dit artikel zijn gemaakt, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.

Belangrijk

Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.

  1. Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
  2. Voer de naam van de resourcegroep in het vak Filteren op naam in.
  3. Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
  4. Selecteer Resourcegroep verwijderen.
  5. U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.

Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.

Volgende stappen

In deze quickstart hebt u een nieuw App Configuration-archief gemaakt en dit gebruikt om functies in een ASP.NET Core-web-app te beheren via de functiebeheerbibliotheken.