Partilhar via


Habilitar recursos condicionais com um filtro personalizado em um aplicativo ASP.NET Core

Os sinalizadores de recursos podem usar filtros de recursos para habilitar recursos condicionalmente. Para obter mais informações sobre filtros de recursos, consulte Habilitar recursos condicionais com filtros de recursos.

Este guia mostra como implementar um filtro de recurso personalizado em um aplicativo ASP.NET Core e usar o filtro de recursos para habilitar recursos condicionalmente.

Pré-requisitos

Implementar um filtro de recurso personalizado

Na sua loja de Configuração de Aplicações, o sinalizador de funcionalidades Beta tem um filtro de funcionalidades personalizado denominado Random. Esse filtro tem um Percentage parâmetro. Para implementar o filtro de recursos, habilite o sinalizador de recurso Beta com base na chance definida pelo Percentage parâmetro.

  1. Vá para a pasta que contém o projeto de aplicação ASP.NET Core da introdução rápida ao gerenciamento de funcionalidades listada em Pré-requisitos.

  2. Adicione um arquivo RandomFilter.cs que contém o seguinte código:

    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);
            }
        }
    }
    

    A RandomFilter classe no código anterior implementa a IFeatureFilter interface da Microsoft.FeatureManagement biblioteca. A IFeatureFilter interface tem um único método chamado EvaluateAsync, que é chamado sempre que um sinalizador de recurso é avaliado. No EvaluateAsync, um filtro de recursos habilita um sinalizador de recurso retornando true.

    Neste código, a classe RandomFilter é decorada com FilterAliasAttribute, o que dá ao seu filtro o alias Random. Esse alias corresponde ao nome do filtro no sinalizador de recurso Beta na Configuração do aplicativo.

  3. Abra o arquivo Program.cs . Registe RandomFilter adicionando uma invocação ao método AddFeatureFilter, conforme mostrado no código a seguir.

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

Aplicar o filtro de funcionalidades

  1. Crie seu aplicativo usando o dotnet build comando. Em seguida, execute-o usando dotnet run.

  2. Na saída do comando dotnet run, localize uma URL que a aplicação web está a escutar. Abra um navegador e vá para esse URL.

  3. Atualize o navegador algumas vezes. O menu Beta às vezes aparece na página da Web, e às vezes não. O sinalizador do recurso Beta não está sendo ativado e desativado manualmente. A variação é causada pelo número aleatório que a implementação de RandomFilter gera quando o sinalizador de recurso EvaluateAsync é avaliado.

    Captura de ecrã de um navegador aberto para localhost:7207. O texto na página indica Dados da Configuração da Aplicação Azure. Nenhum menu Beta é visível.

    Captura de ecrã de um navegador aberto para localhost:7207. O texto na página indica dados da Configuração de Aplicação do Azure. Um menu Beta é realçado.

Próximos passos

Para saber mais sobre os filtros de funcionalidade integrados, consulte os seguintes documentos.

Para obter o resumo completo de recursos da biblioteca de gerenciamento de recursos do .NET, continue para o seguinte documento: