Compartir vía


Habilitación de características condicionales con un filtro personalizado en una aplicación de ASP.NET Core

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

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 .

  1. 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.

  2. 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 RandomFilter clase del código anterior implementa la IFeatureFilter interfaz de la Microsoft.FeatureManagement biblioteca. La interfaz IFeatureFilter tiene un único método denominado EvaluateAsync, al que se llama cada vez que se evalúa una marca de característica. En EvaluateAsync, un filtro de características habilita una marca de característica devolviendo true.

    En este código, la RandomFilter clase está decorada con FilterAliasAttribute, que proporciona al filtro el alias Random. Ese alias coincide con el nombre de filtro en la marca de características Beta de App Configuration.

  3. Abra el archivo Program.cs. Regístrese RandomFilter agregando una llamada al AddFeatureFilter mé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

  1. Compile la aplicación mediante el dotnet build comando . A continuación, ejecútelo mediante dotnet run.

  2. 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.

  3. 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 RandomFilter implementación de EvaluateAsync cuando se evalúa la bandera de funcionalidad.

    Captura de pantalla de un explorador abierto a localhost:7207. El texto de la página indica Datos de Azure App Configuration. No hay ningún menú Beta visible.

    Captura de pantalla de un navegador abierto a localhost:7207. El texto en la página señala Información de Azure App Configuration, con un menú Beta resaltado.

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: