Gefaseerde implementatie van functies voor doelgroepen inschakelen
Met functie vlaggen kunt u de functionaliteit van uw toepassing dynamisch activeren of deactiveren. Functie filters bepalen de status van een functie vlag elke keer dat deze wordt geëvalueerd. De Microsoft.FeatureManagement bibliotheek bevat TargetingFilter , waarmee een functie vlag wordt ingeschakeld voor een opgegeven lijst met gebruikers en groepen, of voor een opgegeven percentage gebruikers. TargetingFilter is ' Plak '. Dit betekent dat zodra een afzonderlijke gebruiker een functie heeft ontvangen, deze functie blijft zien voor alle toekomstige aanvragen. U kunt gebruiken TargetingFilter om een functie in te scha kelen voor een specifiek account tijdens een demo, zodat u nieuwe functies geleidelijk kunt implementeren voor gebruikers in verschillende groepen of ' belsignalen ' en nog veel meer.
In dit artikel leert u hoe u een nieuwe functie in een ASP.NET Core-webtoepassing implementeert voor opgegeven gebruikers en groepen, met behulp TargetingFilter van Azure-app-configuratie.
Een webtoepassing maken met functie vlaggen en verificatie
Als u functies wilt implementeren op basis van gebruikers en groepen, hebt u een webtoepassing nodig waarmee gebruikers zich kunnen aanmelden.
Maak een webtoepassing die wordt geverifieerd aan de hand van een lokale data base met behulp van de volgende opdracht:
dotnet new mvc --auth Individual -o TestFeatureFlagsBouw en voer uit en selecteer vervolgens de koppeling registreren in de rechter bovenhoek om een nieuw gebruikers account te maken. Gebruik een e-mail adres van
test@contoso.com. Selecteer in het bevestigings scherm voor het registreren de optie Klik hier om uw account te bevestigen.Volg de instructies in Quick Start: Voeg functie vlaggen toe aan een ASP.net core-app om een functie vlag toe te voegen aan uw nieuwe webtoepassing.
De functie vlag in app-configuratie in-of uitschakelen. Controleer of deze actie de zicht baarheid van het bèta -item op de navigatie balk bepaalt.
De code van de webtoepassing bijwerken voor het gebruik van TargetingFilter
Op dit moment kunt u de functie vlag gebruiken om de functie in of uit te scha kelen Beta voor alle gebruikers. Als u de functie vlag voor sommige gebruikers wilt inschakelen en deze voor anderen wilt uitschakelen, moet u de code bijwerken om te gebruiken TargetingFilter . In dit voor beeld gebruikt u het e-mail adres van de aangemelde gebruiker als de gebruikers-ID en het gedeelte domein naam van het e-mail adres als de groep. U voegt de gebruiker en groep toe aan de TargetingContext . De TargetingFilter gebruikt deze context om de status van de functie vlag voor elke aanvraag te bepalen.
Update naar de nieuwste versie van het
Microsoft.FeatureManagement.AspNetCorepakket.dotnet add package Microsoft.FeatureManagement.AspNetCoreVoeg een bestand TestTargetingContextAccessor. cs toe:
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); } } }Voeg in Startup. cs een verwijzing toe aan de naam ruimte micro soft. FeatureManagement. FeatureFilters :
using Microsoft.FeatureManagement.FeatureFilters;Werk de ConfigureServices -methode bij om te registreren
TargetingFilter, na het aanroepen vanAddFeatureManagement():services.AddFeatureManagement() .AddFeatureFilter<TargetingFilter>();Werk de methode ConfigureServices bij om de
TestTargetingContextAccessorgemaakte in de vorige stap toe te voegen aan de service verzameling. De TargetingFilter gebruikt deze om de doel context te bepalen wanneer de functie vlag wordt geëvalueerd.services.AddSingleton<ITargetingContextAccessor, TestTargetingContextAccessor>();
De volledige ConfigureServices -methode ziet er als volgt uit:
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>();
}
De functie vlag voor het gebruik van TargetingFilter bijwerken
Ga in het Azure Portal naar de configuratie Store van uw app en selecteer functie beheer.
Selecteer het context menu voor de vlag van de bèta functie die u hebt gemaakt in de Quick Start. Selecteer Bewerken.

Schakel in het scherm bewerken het selectie vakje functie vlag inschakelen in als dit nog niet is geselecteerd. Schakel vervolgens het selectie vakje functie filter gebruiken in.
Selecteer het keuze rondje voor de doel groep.
Selecteer de volgende opties:
- Standaard percentage: 0
- Groepen: Voer een naam in van contoso.com en een percentage van 50
- Gebruikers:
test@contoso.com
Het scherm onderdeel filter ziet er als volgt uit:

Deze instellingen resulteren in het volgende gedrag:
- De functie vlag is altijd ingeschakeld voor gebruiker
test@contoso.com, omdattest@contoso.comdeze wordt weer gegeven in de sectie gebruikers . - De functie vlag is ingeschakeld voor 50% van andere gebruikers in de groep contoso.com , omdat contoso.com wordt vermeld in de sectie groepen met een percentage van 50.
- De functie is altijd uitgeschakeld voor alle andere gebruikers, omdat het standaard percentage is ingesteld op 0.
Selecteer Toep assen om deze instellingen op te slaan en terug te keren naar het scherm functie beheer .
Het functie filter voor de functie vlag wordt nu weer gegeven als doel. Deze status geeft aan dat de functie vlag per aanvraag wordt in-of uitgeschakeld, op basis van de criteria die worden afgedwongen door het doel onderdeel filter.
TargetingFilter in actie
Als u de effecten van deze functie vlag wilt zien, bouwt u de toepassing en voert u deze uit. In eerste instantie wordt het bèta -item niet weer gegeven op de werk balk, omdat de optie standaard percentage is ingesteld op 0.
Meld u nu aan als test@contoso.com met het wacht woord dat u hebt ingesteld bij het registreren. Het bèta -item wordt nu weer gegeven op de werk balk, omdat het test@contoso.com is opgegeven als een doel gebruiker.
In de volgende video ziet u dit gedrag in actie.

U kunt aanvullende gebruikers met @contoso.com e-mail adressen maken om het gedrag van de groeps instellingen te bekijken. met 50% van deze gebruikers wordt het bèta -item weer geven. Het bèta -item wordt niet weer geven in het andere 50%.