0

機能フラグを .net core 2.2 コンソール アプリに追加しようとしています。機能フラグは、Azure App Configuration ストアで定義されています。

機能フラグが appsettings.json ファイルで定義されている場合、問題に直面しましたが、機能しました。完全なコンソール プロジェクトは、SO の質問 hereで定義されています。これは問題ではありません。

私はチュートリアルに従おうとしていますが、これは私を夢中にさせています。ここでの問題は、このチュートリアルが単純ではないことです。その上で、彼はシークレット マネージャー ツールを使用した Web アプリです。

チュートリアルで説明されているように webapp を機能させることができなかったため、最初に単純なコンソール アプリを作成しようとしていますが、これまでのところ Azure App Config ストアでは成功しませんでした。

これまでに動作しなかったコンソール アプリは次のとおりです。どんな助けでも大歓迎です。

コンソール プロジェクトに追加されるパッケージは次のとおりです。

  1. Microsoft.Extensions.Configuration.AzureAppConfiguration
  2. Microsoft.Extensions.Configuration.Json
  3. Microsoft.Extensions.DependencyInjection
  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")} ");
            }
        }
    }
}


4

1 に答える 1