0

我正在尝试向 .net core 2.2 控制台应用程序添加功能标志。功能标志在 Azure 应用配置存储中定义。

当在 appsettings.json 文件中定义功能标志时,我遇到了一个问题,但让它起作用了。完整的控制台项目在我的SO 问题中定义。这不是问题。

我正在尝试按照教程进行操作,这让我发疯了。这里的问题是本教程并不简单。它是一个网络应用程序,在它之上,他使用了Secret manager 工具

我根本无法按照教程中的说明使 webapp 工作,因此我尝试首先创建一个简单的控制台应用程序,但到目前为止,Azure App Config store 无法成功。

这是迄今为止无法运行的控制台应用程序。任何帮助都深表感谢。

以下是添加到控制台项目的包。

  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

4

您是否查看过 Microsoft.FeatureManagement GitHub 存储库中的示例应用程序?

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

您的代码看起来应该可以工作。除非在名为“Beta”的 Azure 应用配置实例中创建了功能标志,否则它将不起作用。

于 2019-12-16T02:36:26.093 回答