コード例 #1
0
        private IConfigurationRoot GetConfiguration()
        {
            var configBuilder = new ConfigurationBuilder()
                                .AddJsonFile("ConsulSettings.json");

            var config = configBuilder.Build();

            try
            {
                var store = new ConsulConfigurationStore(config["Url"], config["Token"]);

                IExternalConfigurationProvider prov =
                    new ExternalConfigurationProvider(store, config["Environment"]);

                var serviceSettings = prov.GetServiceSettingsAsync(config["ServiceName"]).Result;

                if (!string.IsNullOrEmpty(serviceSettings["AppService"]))
                {
                    configBuilder.Sources.Clear();

                    using var jsonStream = new MemoryStream(Encoding.UTF8
                                                            .GetBytes(serviceSettings["AppService"]));

                    configBuilder.AddJsonStream(jsonStream);

                    config = configBuilder.Build();
                }

                else
                {
                    throw new Exception("Consul doesn't contain needed settings");
                }
            }

            catch
            {
                configBuilder.Sources.Clear();
                configBuilder.AddJsonFile("appsettings.json");

                config = configBuilder.Build();
            }

            return(config);
        }
コード例 #2
0
        static void Main(string[] args)
        {
            var consulUrl   = Properties.Settings.Default.ConsulUrl;
            var consulToken = Properties.Settings.Default.ConsulToken;

            var consulConfig = new ConsulConfig
            {
                Url   = consulUrl,
                Token = consulToken
            };

            var store    = new ConsulConfigurationStore(consulConfig.Url, consulConfig.Token);
            var provider = new ExternalConfigurationProvider(store, "debug");

            var mangoSettingsTask = provider.GetServiceSettingsAsync <MangoConfig>("mango");

            var mangoSettings = mangoSettingsTask.Result;

            Console.WriteLine($"ApiKey : {mangoSettings.ApiKey}");
            Console.WriteLine($"ApiSignature : {mangoSettings.ApiSignature}");

            Console.ReadLine();
        }
 public Task <Dictionary <string, string> > GetServiceSettingsAsyncFromCache()
 {
     return(_provider.GetServiceSettingsAsync("redis"));
 }