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); }
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")); }