Управление функциями, переключение функций, флаги функций, не работающие с хранилищем конфигурации приложений Azure

Я пытаюсь добавить флаги функций в консольное приложение.net core 2.2. Флаги функций определены в хранилище конфигурации приложений Azure.

Когда флаги функций определены в файле appsettings.json, я столкнулся с проблемой, но заставил ее работать. Полный консольный проект определен в моем вопросе SO здесь. Проблема не в этом.

Я пытаюсь следовать руководству, и это сводит меня с ума. Проблема здесь в том, что это руководство не простое. Это веб-приложение, поверх которого он использовал инструмент секретного менеджера.

Я просто не мог заставить веб-приложение работать, как описано в руководстве, поэтому я пытаюсь сначала создать простое консольное приложение, но пока не смог добиться успеха с хранилищем конфигурации приложений Azure.

Вот консольное приложение, которое пока не работало. Любая помощь очень ценится.

Следующие пакеты добавляются в консольный проект.

  1. https://www.nuget.org/packages/Microsoft.Extensions.Configuration.AzureAppConfiguration/2.0.0-preview-009470001-1371
  2. https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Json/2.1.1
  3. https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection/2.1.1
  4. Microsoft.FeatureManagement
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.FeatureManagement;
using Microsoft.FeatureManagement.FeatureFilters;
using Microsoft.Extensions.Configuration.AzureAppConfiguration;

namespace ConfigurationConsoleApp
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var builder = new ConfigurationBuilder();
            var azureConnectionString = "<APP_CONFIGURATION_CONNECTION_STRING>";
            //builder.AddAzureAppConfiguration(options =>
            //{
            //    options.Connect(azureConnectionString).UseFeatureFlags();
            //});
            builder.AddAzureAppConfiguration(azureConnectionString);
            var config = builder.Build();
            Console.WriteLine(config["TestApp:Settings:Message"] ?? "Hello world!");
            var configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
            var services = new ServiceCollection();

            //services.AddSingleton<IConfiguration>(configuration).AddFeatureManagement().AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();
            services.AddSingleton<IConfiguration>(config).AddFeatureManagement();//.AddFeatureFilter<PercentageFilter>().AddFeatureFilter<AccountIdFilter>();

            const string FeatureName = "Beta";

            using (ServiceProvider serviceProvider = services.BuildServiceProvider())
            {
                var featureManager = serviceProvider.GetRequiredService<IFeatureManager>();
                var enabled = await featureManager.IsEnabledAsync(FeatureName);
                Console.WriteLine($"The {FeatureName} feature is {(enabled ? "enabled" : "disabled")} ");
            }
        }
    }
}


1 ответ

Решение

Вы ознакомились с примерами приложений в репозитории Microsoft.FeatureManagement GitHub?

https://github.com/microsoft/FeatureManagement-Dotnet/tree/master/examples/FeatureFlagDemohttps://github.com/microsoft/FeatureManagement-Dotnet/tree/master/examples/ConsoleApp

Ваш код выглядит так, как будто он должен работать. Это не будет работать, если в экземпляре конфигурации приложения Azure с именем "Бета" не будет создан флаг функции.

Другие вопросы по тегам