Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las marcas de características pueden usar filtros de características para habilitarlas de forma condicional. Para obtener más información sobre los filtros de características, consulte Habilitación de características condicionales con filtros de características.
En esta guía se muestra cómo implementar un filtro de características personalizado en una aplicación ASP.NET Core y usar el filtro de características para habilitar las características de forma condicional.
Requisitos previos
- La aplicación ASP.NET Core con una marca de característica Beta que se crea al completar los pasos descritos en Inicio rápido: Adición de marcas de características a una aplicación de ASP.NET Core. Esta guía se basa en el inicio rápido de la administración de características.
- Un filtro de características personalizado denominado
Random, agregado a la bandera de características Beta en el almacén de Azure App Configuration. Para obtener instrucciones, consulte Adición de un filtro de características personalizado.
Implementación de un filtro de características personalizado
En el almacén de configuración de aplicaciones, el indicador de funciones Beta tiene un filtro de funciones personalizado denominado Random. Ese filtro tiene un Percentage parámetro . Para implementar el filtro de características, habilite la marca de característica Beta en función de la probabilidad definida por el Percentage parámetro .
Vaya a la carpeta que contiene el proyecto de aplicación ASP.NET Core desde el inicio rápido de administración de características que se muestra en Requisitos previos.
Agregue un archivo RandomFilter.cs que contenga el código siguiente:
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); } } }La
RandomFilterclase del código anterior implementa laIFeatureFilterinterfaz de laMicrosoft.FeatureManagementbiblioteca. La interfazIFeatureFiltertiene un único método denominadoEvaluateAsync, al que se llama cada vez que se evalúa una marca de característica. EnEvaluateAsync, un filtro de características habilita una marca de característica devolviendotrue.En este código, la
RandomFilterclase está decorada conFilterAliasAttribute, que proporciona al filtro el aliasRandom. Ese alias coincide con el nombre de filtro en la marca de características Beta de App Configuration.Abra el archivo Program.cs. Regístrese
RandomFilteragregando una llamada alAddFeatureFiltermétodo , como se muestra en el código siguiente:// 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 // ... ...
Aplicación del filtro de características
Compile la aplicación mediante el
dotnet buildcomando . A continuación, ejecútelo mediantedotnet run.En la salida del comando
dotnet run, busque una dirección URL en la que esté escuchando la aplicación web. Abra un explorador y vaya a esa dirección URL.Actualice el explorador varias veces. El menú Beta a veces aparece en la página web y a veces no lo hace. La marca de característica Beta no se activa y desactiva manualmente. La variación se debe al número aleatorio que genera la
RandomFilterimplementación deEvaluateAsynccuando se evalúa la bandera de funcionalidad.
Pasos siguientes
Para obtener más información sobre los filtros de características integrados, continúe con los siguientes documentos:
Para obtener la lista completa de características de la biblioteca de administración de características de .NET, continúe con el siguiente documento: