Aktivera stegvis distribution av funktioner för mål grupper
Med funktions flaggor kan du aktivera eller inaktivera funktioner dynamiskt i ditt program. Funktions filter bestämmer status för en funktions flagga varje gången den utvärderas. Microsoft.FeatureManagementBiblioteket innehåller TargetingFilter , som aktiverar en funktions flagga för en angiven lista med användare och grupper, eller för en viss procent andel av användarna. TargetingFilter är "trög". Det innebär att när en enskild användare får en funktion fortsätter de att se den funktionen på alla framtida begär Anden. Du kan använda TargetingFilter för att aktivera en funktion för ett särskilt konto under en demonstration, för att progressivt distribuera nya funktioner till användare i olika grupper eller "ringar", och mycket mer.
I den här artikeln får du lära dig hur du distribuerar en ny funktion i ett ASP.NET Core-webbprogram till angivna användare och grupper med hjälp av TargetingFilter Azure App konfiguration.
Skapa ett webb program med funktions flaggor och autentisering
Om du vill distribuera funktioner baserat på användare och grupper behöver du ett webb program som gör det möjligt för användarna att logga in.
Skapa ett webb program som autentiserar mot en lokal databas med följande kommando:
dotnet new mvc --auth Individual -o TestFeatureFlagsSkapa och kör och välj sedan länken Registrera i det övre högra hörnet för att skapa ett nytt användar konto. Använd en e-postadress för
test@contoso.com. På sidan Registrera bekräftelse väljer du Klicka här för att bekräfta ditt konto.Följ anvisningarna i snabb start: Lägg till funktions flaggor i en ASP.net Core app för att lägga till en funktions flagga i det nya webb programmet.
Växla funktions flaggan i app-konfigurationen. Kontrol lera att den här åtgärden styr visningen av beta objekt i navigerings fältet.
Uppdatera webb program koden för att använda TargetingFilter
I det här läget kan du använda funktions flaggan för att aktivera eller inaktivera Beta funktionen för alla användare. Om du vill aktivera funktions flaggan för vissa användare samtidigt som du inaktiverar den för andra, kan du uppdatera koden för att använda TargetingFilter . I det här exemplet ska du använda den inloggade användarens e-postadress som användar-ID och domän namns delen av e-postadressen som gruppen. Du lägger till användaren och gruppen i TargetingContext . I TargetingFilter används den här kontexten för att fastställa status för funktions flaggan för varje begäran.
Uppdatera till den senaste versionen av
Microsoft.FeatureManagement.AspNetCorepaketet.dotnet add package Microsoft.FeatureManagement.AspNetCoreLägg till en TestTargetingContextAccessor. cs -fil:
using Microsoft.AspNetCore.Http; using Microsoft.FeatureManagement.FeatureFilters; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace TestFeatureFlags { public class TestTargetingContextAccessor : ITargetingContextAccessor { private const string TargetingContextLookup = "TestTargetingContextAccessor.TargetingContext"; private readonly IHttpContextAccessor _httpContextAccessor; public TestTargetingContextAccessor(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); } public ValueTask<TargetingContext> GetContextAsync() { HttpContext httpContext = _httpContextAccessor.HttpContext; if (httpContext.Items.TryGetValue(TargetingContextLookup, out object value)) { return new ValueTask<TargetingContext>((TargetingContext)value); } List<string> groups = new List<string>(); if (httpContext.User.Identity.Name != null) { groups.Add(httpContext.User.Identity.Name.Split("@", StringSplitOptions.None)[1]); } TargetingContext targetingContext = new TargetingContext { UserId = httpContext.User.Identity.Name, Groups = groups }; httpContext.Items[TargetingContextLookup] = targetingContext; return new ValueTask<TargetingContext>(targetingContext); } } }I startup. cs lägger du till en referens till namn området Microsoft. FeatureManagement. FeatureFilters :
using Microsoft.FeatureManagement.FeatureFilters;Uppdatera ConfigureServices -metoden för registrering
TargetingFiltergenom att följa anropet tillAddFeatureManagement():services.AddFeatureManagement() .AddFeatureFilter<TargetingFilter>();Uppdatera ConfigureServices -metoden för att lägga till den
TestTargetingContextAccessorskapade i föregående steg i tjänst samlingen. TargetingFilter använder den för att fastställa mål kontexten varje gång funktions flaggan utvärderas.services.AddSingleton<ITargetingContextAccessor, TestTargetingContextAccessor>();
Hela ConfigureServices -metoden ser ut så här:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddControllersWithViews();
services.AddRazorPages();
// Add feature management, targeting filter, and ITargetingContextAccessor to service collection
services.AddFeatureManagement().AddFeatureFilter<TargetingFilter>();
services.AddSingleton<ITargetingContextAccessor, TestTargetingContextAccessor>();
}
Uppdatera funktions flaggan om du vill använda TargetingFilter
Gå till appens konfigurations Arkiv i Azure Portal och välj funktions hanteraren.
Välj snabb menyn för den beta funktions flagga som du skapade i snabb starten. Välj Redigera.

På sidan Redigera markerar du kryss rutan Aktivera funktions flagga om den inte redan är markerad. Markera sedan kryss rutan Använd funktions filter .
Välj alternativ knappen för anpassning .
Välj följande alternativ:
- Standard procent: 0
- Grupper: Ange ett namn på contoso.com och en procent andel av 50
- Användare:
test@contoso.com
Funktions filtrets skärm ser ut så här:

De här inställningarna resulterar i följande beteende:
- Funktions flaggan är alltid aktive rad för användaren
test@contoso.com, eftersomtest@contoso.comden visas i avsnittet användare . - Funktions flaggan är aktive rad för 50% av andra användare i contoso.com -gruppen eftersom contoso.com anges i grupper -avsnittet med en procents ATS på 50.
- Funktionen är alltid inaktive rad för alla andra användare, eftersom standard procent andelen är inställd på 0.
Välj tillämpa för att spara inställningarna och återgå till funktions hanterarens skärm.
Funktions filtret för funktions flaggan visas nu som mål. Det här läget anger att funktions flaggan kommer att aktive ras eller inaktive ras för varje begäran, baserat på de kriterier som tillämpas av funktions filtret för mål .
TargetingFilter i praktiken
Skapa och kör programmet om du vill se effekterna av den här funktions flaggan. I början visas inte beta objektet i verktygsfältet eftersom standard procent andelen är inställd på 0.
Logga nu in som test@contoso.com med det lösen ord som du angav när du registrerade dig. Beta -objektet visas nu i verktygsfältet, eftersom test@contoso.com har angetts som en mål användare.
Följande video visar hur det fungerar i praktiken.

Du kan skapa ytterligare användare med @contoso.com e-postadresser för att se hur grupp inställningarna fungerar. 50% av dessa användare kommer att se beta -objektet. Den andra 50% ser inte beta -objektet.