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.
Funktionsflaggor kan använda funktionsfilter för att aktivera funktioner villkorligt. Mer information om funktionsfilter finns i Aktivera villkorsstyrda funktioner med funktionsfilter.
Den här guiden visar hur du implementerar ett anpassat funktionsfilter i ett ASP.NET Core-program och använder funktionsfiltret för att aktivera funktioner villkorligt.
Förutsättningar
- ASP.NET Core-programmet med en betafunktionsflagga som du skapar när du slutför stegen i Snabbstart: Lägg till funktionsflaggor i en ASP.NET Core-app. Den här guiden bygger på snabbstarten för funktionshantering.
- Ett anpassat funktionsfilter med namnet
Random, som lagts till i betafunktionsflaggan i Azure App Configuration Store. Anvisningar finns i Lägga till ett anpassat funktionsfilter.
Implementera ett anpassat funktionsfilter
I din App Configuration-butik har flaggan Beta ett anpassat funktionsfilter med namnet Random. Det filtret har en Percentage parameter. Om du vill implementera funktionsfiltret aktiverar du betafunktionsflaggan baserat på den chans som definieras av parameternPercentage.
Gå till mappen som innehåller ASP.NET Core-programprojektet från snabbstarten för funktionshantering som visas i Krav.
Lägg till en RandomFilter.cs fil som innehåller följande kod:
using Microsoft.FeatureManagement; namespace TestAppConfig { [FilterAlias("Random")] public class RandomFilter : IFeatureFilter { private readonly Random _random; public RandomFilter() { _random = new Random(); } public Task<bool> EvaluateAsync(FeatureFilterEvaluationContext context) { int percentage = context.Parameters.GetSection("Percentage").Get<int>(); int randomNumber = _random.Next(100); return Task.FromResult(randomNumber <= percentage); } } }Klassen
RandomFilteri föregående kod implementerarIFeatureFiltergränssnittet frånMicrosoft.FeatureManagementbiblioteket. GränssnittetIFeatureFilterhar en enda metod med namnetEvaluateAsync, som anropas när en funktionsflagga utvärderas. IEvaluateAsyncaktiverar ett funktionsfilter en funktionsflagga genom atttruereturnera .I den
RandomFilterhär koden är klassen dekorerad medFilterAliasAttribute, vilket ger filtret aliasetRandom. Det aliaset matchar filternamnet i funktionsflaggan Beta i App Configuration.Öppna filen Program.cs . Genom att lägga till ett anrop till
RandomFilter-metoden, registrerarAddFeatureFilterenligt följande kod:// Existing code in Program.cs // ... ... // Add feature management to the container of services. builder.Services.AddFeatureManagement() .AddFeatureFilter<RandomFilter>(); // The rest of the existing code in Program.cs // ... ...
Använd funktionsfiltret
Skapa din app med hjälp
dotnet buildav kommandot . Kör den sedan med hjälp avdotnet run.I utdata från kommandot
dotnet runhittar du en URL som webbappen lyssnar på. Öppna en webbläsare och gå till webbadressen.Uppdatera webbläsaren några gånger. Beta-menyn visas ibland på webbsidan, och ibland inte. Beta-funktionsflaggan aktiveras och inaktiveras inte manuellt. Varianten orsakas av det slumptal som implementeringen
RandomFilteravEvaluateAsyncgenererar när funktionsflaggan utvärderas.
Nästa steg
Om du vill veta mer om inbyggda funktionsfilter fortsätter du till följande dokument:
För en fullständig funktionsöversikt av .NET-funktionshanteringsbiblioteket, gå vidare till följande dokument.