Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här guiden använder du målfiltret för att distribuera en funktion till målgrupper för ditt ASP.NET Core-program. Mer information om målfiltret finns i Distribuera funktioner till målgrupper.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa en kostnadsfritt.
- En App Configuration-butik, som visas i guiden för att skapa en App Configuration-butik.
- En funktionsflagga med målfilter. Skapa funktionsflaggan.
- .NET SDK 6.0 eller senare.
Skapa ett webbprogram med en funktionsflagga
I det här avsnittet skapar du ett webbprogram som gör att användare kan logga in och använda den betafunktionsflagga som du skapade tidigare.
Skapa ett webbprogram som autentiserar mot en lokal databas med hjälp av följande kommando.
dotnet new webapp --auth Individual -o TestFeatureFlagsGå till den nyligen skapade katalogen TestFeatureFlags och lägg till referenser till följande NuGet-paket.
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore dotnet add package Microsoft.FeatureManagement.AspNetCore dotnet add package Azure.IdentitySkapa en användarhemlighet för programmet genom att köra följande kommandon.
Kommandot använder Secret Manager för att lagra en hemlighet med namnet
Endpoints:AppConfiguration, som lagrar slutpunkten för appkonfigurationsarkivet.<your-App-Configuration-endpoint>Ersätt platshållaren med appkonfigurationsarkivets slutpunkt. Du hittar slutpunkten på bladet Översikt för appkonfigurationsarkivet i Azure Portal.dotnet user-secrets init dotnet user-secrets set Endpoints:AppConfiguration "<your-App-Configuration-endpoint>"Lägg till Azure App Configuration och funktionshantering i ditt program.
Du använder för att autentisera
DefaultAzureCredentialtill appkonfigurationsarkivet. Följ anvisningarna för att tilldela dina autentiseringsuppgifter rollen App Configuration Data Reader. Se till att ge tillräckligt med tid för att behörigheten ska spridas innan du kör programmet.Uppdatera Program.cs-filen med följande kod.
// Existing code in Program.cs // ... ... using Azure.Identity; var builder = WebApplication.CreateBuilder(args); // Retrieve the endpoint string endpoint = builder.Configuration.GetValue<string>("Endpoints:AppConfiguration") ?? throw new InvalidOperationException("The setting `Endpoints:AppConfiguration` was not found."); // Connect to Azure App Configuration and load all feature flags with no label builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(new Uri(endpoint), new DefaultAzureCredential()) .UseFeatureFlags(); }); // Add Azure App Configuration middleware to the container of services builder.Services.AddAzureAppConfiguration(); // Add feature management to the container of services builder.Services.AddFeatureManagement(); // The rest of existing code in Program.cs // ... ...
Aktivera uppdatering av konfigurations- och funktionsflaggan från Azure App Configuration med mellanprogrammet För appkonfiguration.
Uppdatera Program.cs med följande kod.
// Existing code in Program.cs // ... ... var app = builder.Build(); // Use Azure App Configuration middleware for dynamic configuration refresh app.UseAzureAppConfiguration(); // The rest of existing code in Program.cs // ... ...Lägg till en ny tom Razor-sida med namnet Beta under katalogen Pages. Den innehåller två filer Beta.cshtml och Beta.cshtml.cs.
@page @model TestFeatureFlags.Pages.BetaModel @{ ViewData["Title"] = "Beta Page"; } <h1>This is the beta website.</h1>Öppna Beta.cshtml.cs och lägg till
FeatureGateattributet iBetaModelklassen.using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.FeatureManagement.Mvc; namespace TestFeatureFlags.Pages { [FeatureGate("Beta")] public class BetaModel : PageModel { public void OnGet() { } } }Öppna Pages/_ViewImports.cshtml och registrera hjälpverktyget för funktionshanteraren med hjälp av ett
@addTagHelperdirektiv.@addTagHelper *, Microsoft.FeatureManagement.AspNetCoreÖppna _Layout.cshtml i katalogen Pages/Shared . Infoga en ny
<feature>tagg mellan start- och sekretessnavigeringsobjekten, enligt de markerade raderna nedan.<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-page="/Index">TestAppConfigNet3</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-page="/Index">Home</a> </li> <feature name="Beta"> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Beta">Beta</a> </li> </feature> <li class="nav-item"> <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a> </li> </ul> </div> </div> </nav>
Aktivera mål för webbprogrammet
En målkontext krävs för funktionsutvärdering med inriktning. Du kan uttryckligen ange den som en parameter för API:et featureManager.IsEnabledAsync . I ASP.NET Core kan målkontexten också tillhandahållas via tjänstsamlingen som en omgivande kontext genom att implementera gränssnittet ITargetingContextAccessor .
Rikta in sig på kontextåtkomst
Om du vill ange målkontexten skickar du implementeringstypen ITargetingContextAccessor för metoden till WithTargeting<T> metoden. Om ingen typ anges används en standardimplementering, som visas i följande kodfragment. Standardinställningen för kontextåtkomst använder HttpContext.User.Identity.Name som UserId och HttpContext.User.Claims av typen Role för Groups. Du kan referera till DefaultHttpTargetingContextAccessor för att implementera din egen om anpassning behövs. Mer information om hur du implementerar ITargetingContextAccessorfinns i funktionsreferensen för mål.
// Existing code in Program.cs
// ... ...
// Add feature management to the container of services
builder.Services.AddFeatureManagement()
.WithTargeting();
// The rest of existing code in Program.cs
// ... ...
Kommentar
För Blazor-program, se instruktioner för att aktivera funktionshantering som begränsade tjänster.
Målfilter i praktiken
Skapa och kör programmet. Till en början visas inte betaobjektet i verktygsfältet eftersom alternativet Standardprocent är inställt på 0.
Välj länken Registrera i det övre högra hörnet för att skapa ett nytt användarkonto. Använd en e-postadress till
test@contoso.com. På skärmen Registrera bekräftelse väljer du Klicka här för att bekräfta ditt konto.Logga in som
test@contoso.commed det lösenord som du angav när du registrerade kontot.Betaobjektet visas nu i verktygsfältet eftersom
test@contoso.comdet har angetts som en målanvändare.
Logga nu in som
testuser@contoso.com, med det lösenord som du angav när du registrerade kontot. Betaobjektet visas inte i verktygsfältet eftersomtestuser@contoso.comdet anges som en exkluderad användare.
Nästa steg
Om du vill veta mer om funktionsfiltren fortsätter du till följande dokument.
Fortsätt till följande dokument för den fullständiga funktionskörningen i .NET-funktionshanteringsbiblioteket.