Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Featureflags können Featurefilter verwenden, um Features bedingt zu aktivieren. Weitere Informationen zu Featurefiltern finden Sie unter Aktivieren von bedingten Features mit Featurefiltern.
In diesem Handbuch erfahren Sie, wie Sie einen benutzerdefinierten Featurefilter in einer ASP.NET Core-Anwendung implementieren und den Featurefilter verwenden, um Features bedingt zu aktivieren.
Voraussetzungen
- Die ASP.NET Core-Anwendung mit einem Beta-Feature-Flag, das Sie erstellen, wenn Sie die Schritte in der Schnellstartanleitung ausführen: Hinzufügen von Featurekennzeichnungen zu einer ASP.NET Core-App. Dieser Leitfaden baut auf der Schnellstartanleitung für die Featureverwaltung auf.
- Ein benutzerdefinierter Featurefilter namens
Random, der dem Beta-Featureflag in Ihrem Azure App-Konfigurationsspeicher hinzugefügt wurde. Anweisungen finden Sie unter Hinzufügen eines benutzerdefinierten Featurefilters.
Implementieren eines benutzerdefinierten Featurefilters
Im App-Konfigurationsspeicher verfügt das Feature-Flag "Beta" über einen benutzerdefinierten Featurefilter namens Random. Dieser Filter weist einen Percentage Parameter auf. Um den Featurefilter zu implementieren, aktivieren Sie den Beta-Funktionsschalter basierend auf der durch den Percentage-Parameter definierten Wahrscheinlichkeit.
Wechseln Sie zu dem Ordner, der das ASP.NET Core-Anwendungsprojekt enthält, aus der Schnellstartanleitung zur Featureverwaltung, die unter "Voraussetzungen" aufgeführt ist.
Fügen Sie eine RandomFilter.cs Datei hinzu , die den folgenden Code enthält:
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); } } }Die
RandomFilterKlasse im vorherigen Code implementiert dieIFeatureFilterSchnittstelle aus derMicrosoft.FeatureManagementBibliothek. DieIFeatureFilter-Schnittstelle verfügt über eine einzelne Methode namensEvaluateAsync, die immer dann aufgerufen wird, wenn ein Featureflag ausgewertet wird. InEvaluateAsyncaktiviert ein Featurefilter ein Featureflag, indemtruezurückgegeben wird.In diesem Code ist die
RandomFilterKlasse mitFilterAliasAttributeversehen, mit der Ihr Filter den AliasRandomerhält. Dieser Alias entspricht dem Filternamen in der Beta-Featurekennzeichnung in der App-Konfiguration.Öffnen Sie die Datei Program.cs. Registrieren Sie
RandomFilter, indem Sie, wie im folgenden Code gezeigt, einen Aufruf der MethodeAddFeatureFilterhinzufügen.// 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 // ... ...
Anwenden des Featurefilters
Erstellen Sie Ihre App mithilfe des
dotnet buildBefehls. Führen Sie es dann mithilfe vondotnet runaus.Suchen Sie in der Ausgabe des
dotnet runBefehls nach einer URL, auf der die Web-App lauscht. Öffnen Sie einen Browser, und wechseln Sie zu dieser URL.Aktualisieren Sie den Browser mehrmals. Das Menü "Beta" wird manchmal auf der Webseite angezeigt und manchmal nicht sichtbar. Das Beta-Feature-Flag wird nicht manuell ein- und ausgeschaltet. Die Variation wird durch die Zufallszahl verursacht, die von der
RandomFilter-Implementierung vonEvaluateAsyncgeneriert wird, wenn das Feature-Flag ausgewertet wird.
Nächste Schritte
Um mehr über integrierte Featurefilter zu erfahren, fahren Sie mit den folgenden Dokumenten fort:
Gehen Sie für die vollständige Funktionsübersicht der .NET-Bibliothek zur Featureverwaltung zu dem folgenden Dokument: