0

我开始在我的项目中使用 Azure 应用配置服务和功能标志功能。我看到的是每当我定义一个新的功能标志并为标签字段设置一些值时,_featureManager.GetFeatureNamesAsync();由于某种原因它不会被检索到。为了功能标志管理,我创建了一个FeatureFlagManager,如下所示:

public class FeatureFlagManager: IFeatureFlagManager
{
    private readonly IFeatureManager _featureManager;

    public FeatureFlagManager(IFeatureManager featureManager)
    {
        _featureManager = featureManager;
    }

    public async Task<IEnumerable<FeatureFlag>> GetFeatureFlags()
    {
        var featureList = new List<FeatureFlag>();           
        var featureNames = _featureManager.GetFeatureNamesAsync();

        await foreach (var name in featureNames)
        {
            var isEnabled = await _featureManager.IsEnabledAsync(name);
            featureList.Add(new FeatureFlag()
            {
                FeatureName = name,
                IsEnabled = isEnabled
            });
        }

        return featureList;
    }
}

REST API 端点:

[HttpGet]
[Route("featureFlags")]
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(IEnumerable<FeatureFlag>))]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetFeatureFlags()
{
    using (new Tracer(Logger, $"{nameof(ConfigurationController)}.{nameof(GetFeatureFlags)}"))
    {
        return Ok(await _featureFlagManager.GetFeatureFlags());

    }
}

我在 Azure 配置中定义了 5 个功能标志: 在此处输入图像描述

但是每当我调用我的端点来获取所有带有值的功能标志时,定义了标签的那个就会被忽略;在此处输入图像描述

有什么理由让它这样工作还是我错过了什么?我注意到的另一件事是,一旦您在 Azure 中创建了新功能标志并定义了标签,就没有其他选项可以对其进行编辑。干杯

4

1 回答 1

1

在 program.cs 中,您需要告诉配置返回带有标签的标志。

                    if (!string.IsNullOrEmpty(settings["AppConfigConnectionString"]))
                {
                    builder.AddAzureAppConfiguration(options => {
                        options.Connect(settings["AppConfigConnectionString"]);
                        options.UseFeatureFlags(opt => opt.Label = "WHAT_EVER_LABEL_YOU_WANT");
                    });
                }
于 2021-10-07T13:52:57.430 回答