apolloconfig/apollo.net

同一个配置项,在不同命名空间时,优先级问题。

Closed this issue · 3 comments

你好:

有 2 个命名空间,application 与 application2,根据 apollo 官方说明,当引入 application2 时应该会默认覆盖 application 的配置项,
目前是无效的。

image

        public TestController(ITokenService tokenService, IConfiguration configuration, IOptionsMonitor<LiuXueOptions> options)
        {
            _tokenService = tokenService;
            _secret = options.CurrentValue.LiuXueAdminAPISecret!;
            _configuration = configuration;
        }


        public IActionResult Index()
        {
            var env = _configuration["Env"];

            // "Namespaces": [ "application2", "application" ]
            // "Namespaces": [ "application", "application2" ]

            // 始终返回:env: DEV
            // 即:application2 的配置,无法覆盖默认 application 的配置项的值。

            return Content("env: " + env);
        }

调试时看看_configuration的Providers属性值的顺序,以及相应的两个Provider的Data属性值

image

你好,目前配置中心注册了 3 个 provider,第1个 provider 值 为 UAT,第 3 个 provider 值为 DEV

无论是否调整 namespaces 顺序,provider 始终都是如此。请看图。

  "Apollo": {
    "AppId": "",
    "Secret": "",
    "MetaServer": "",
    "Namespaces": [ "application", "application.json", "application2" ]
  }

image
感谢,问题应该排查到了,这里在添加 apollo 时,又进行 .AddDefault() 添加了默认的命名空间导致的。