/// <summary> /// Adds Json, Environment Variables and VCAP Services as configuration sources /// appsettings.{ASPNETCORE_ENVIRONMENT}.* files are optional /// </summary> /// <param name="instance"></param> /// <param name="jsonSettingsOptional"></param> /// <param name="yamlSettingsOptional"></param> /// <param name="environment"></param> public static AppBuilder AddDefaultConfigurations(this AppBuilder instance, bool jsonSettingsOptional = true, bool yamlSettingsOptional = true, string environment = null) { ReflectionHelper .GetNonPublicInstanceFieldValue <List <Action <HostBuilderContext, IConfigurationBuilder> > >(instance, "ConfigureAppConfigurationDelegates") .Add((builderContext, configBuilder) => { configBuilder.SetBasePath(GetContentRoot()); configBuilder.AddWebConfiguration(); configBuilder.AddJsonFile("appSettings.json", jsonSettingsOptional, false); configBuilder.AddJsonFile($"appSettings.{environment ?? (Environment.GetEnvironmentVariable(ASPNET_ENV_VAR) ?? string.Empty)}.json", true, false); configBuilder.AddYamlFile("appSettings.yaml", yamlSettingsOptional, false); configBuilder.AddYamlFile($"appSettings.{environment ?? (Environment.GetEnvironmentVariable(ASPNET_ENV_VAR) ?? string.Empty)}.yaml", true, false); configBuilder.AddEnvironmentVariables(); configBuilder.AddCloudFoundry(); configBuilder.AddPlaceholderResolver(); }); ReflectionHelper .GetNonPublicInstanceFieldValue <List <Action <HostBuilderContext, IServiceCollection> > >(instance, "ConfigureServicesDelegates") .Add((builderContext, services) => { services.ConfigureCloudFoundryOptions(builderContext.Configuration); WebConfigurationHelper.OverrideWebConfiguration(builderContext.Configuration); }); return(instance); }
public static AppBuilder PersistSessionToRedis(this AppBuilder instance) { ReflectionHelper .GetNonPublicInstanceFieldValue <List <Action <HostBuilderContext, IServiceCollection> > >(instance, "ConfigureServicesDelegates") .Add((builderContext, services) => { WebConfigurationHelper.ValidateWebConfigurationForRedisSessionState(); services.AddRedisConnectionMultiplexer(builderContext.Configuration); }); instance.AddDefaultConfigurations(); return(instance); }
/// <summary> /// Adds spring cloud config server as a configuration source /// </summary> /// <param name="instance"></param> /// <param name="environment"></param> /// <param name="configServerLogger"></param> /// <returns></returns> public static AppBuilder AddConfigServer(this AppBuilder instance, string environment = null, ILoggerFactory configServerLogger = null) { var inMemoryConfigStore = ReflectionHelper .GetNonPublicInstancePropertyValue <Dictionary <string, string> >(instance, "InMemoryConfigStore"); inMemoryConfigStore["spring:application:name"] = "${vcap:application:name}"; inMemoryConfigStore["spring:cloud:config:name"] = "${vcap:application:name}"; if (!string.IsNullOrWhiteSpace(environment)) { inMemoryConfigStore["spring:cloud:config:env"] = environment; } else if (!string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(ASPNET_ENV_VAR))) { inMemoryConfigStore["spring:cloud:config:env"] = "${ASPNETCORE_ENVIRONMENT}"; } else { //do nothing } inMemoryConfigStore["spring:cloud:config:validate_certificates"] = "false"; inMemoryConfigStore["spring:cloud:config:failFast"] = "false"; ReflectionHelper .GetNonPublicInstanceFieldValue <List <Action <HostBuilderContext, IConfigurationBuilder> > >(instance, "ConfigureAppConfigurationDelegates") .Add((builderContext, configBuilder) => { configBuilder.AddConfigServer(configServerLogger); configBuilder.AddEnvironmentVariables(); configBuilder.AddPlaceholderResolver(); }); ReflectionHelper .GetNonPublicInstanceFieldValue <List <Action <HostBuilderContext, IServiceCollection> > >(instance, "ConfigureServicesDelegates") .Add((builderContext, services) => { services.ConfigureCloudFoundryOptions(builderContext.Configuration); WebConfigurationHelper.OverrideWebConfiguration(builderContext.Configuration); }); return(instance); }