diff --git a/src/Shared/ProviderConfiguration.cs b/src/Shared/ProviderConfiguration.cs index c3423252..50fd78fb 100644 --- a/src/Shared/ProviderConfiguration.cs +++ b/src/Shared/ProviderConfiguration.cs @@ -153,6 +153,7 @@ private static string GetConnectionStringFromConfig(NameValueCollection config, string appSettingsValue = GetFromAppSetting(literalValue); if (!string.IsNullOrEmpty(appSettingsValue)) { + appSettingsValue = Environment.ExpandEnvironmentVariables(appSettingsValue); return appSettingsValue; } @@ -160,7 +161,10 @@ private static string GetConnectionStringFromConfig(NameValueCollection config, && ConfigurationManager.ConnectionStrings[literalValue] != null && !string.IsNullOrWhiteSpace(ConfigurationManager.ConnectionStrings[literalValue].ConnectionString)) { - return ConfigurationManager.ConnectionStrings[literalValue].ConnectionString; + var connectionString = ConfigurationManager.ConnectionStrings[literalValue].ConnectionString; + connectionString = Environment.ExpandEnvironmentVariables(connectionString); + + return connectionString; } return literalValue; } diff --git a/test/RedisSessionStateProviderUnitTest/ProviderConfigurationTests.cs b/test/RedisSessionStateProviderUnitTest/ProviderConfigurationTests.cs index 8e972fdd..f412786b 100644 --- a/test/RedisSessionStateProviderUnitTest/ProviderConfigurationTests.cs +++ b/test/RedisSessionStateProviderUnitTest/ProviderConfigurationTests.cs @@ -238,6 +238,22 @@ public void GetConnectionString_Valid() config.Add(settingsMethodName, "GetSettings"); Assert.Equal("localhost:6380", ProviderConfiguration.GetConnectionString(config)); } + + [Fact] + public void UseConnectionStringByNameWithEnvironmentVariables() + { + const string environmentVariableName = "__ASPNET_REDIS_CONNECTION_STRING__"; + const string expectedConnectionString = "localhost:6380,localhost:6381"; + + Environment.SetEnvironmentVariable(environmentVariableName, expectedConnectionString); + + NameValueCollection config = new NameValueCollection(); + config.Add("connectionString", "RedisSession2"); + Assert.Equal(expectedConnectionString, + ProviderConfiguration.ProviderConfigurationForSessionState(config).ConnectionString); + + Environment.SetEnvironmentVariable(environmentVariableName, null); + } } public class Logger diff --git a/test/RedisSessionStateProviderUnitTest/app.config b/test/RedisSessionStateProviderUnitTest/app.config index ab225601..9cdbbfa3 100644 --- a/test/RedisSessionStateProviderUnitTest/app.config +++ b/test/RedisSessionStateProviderUnitTest/app.config @@ -2,6 +2,7 @@ +