@@ -12,10 +12,20 @@ namespace Microsoft.Extensions.Configuration.EnvironmentVariables
1212 /// </summary>
1313 public class EnvironmentVariablesConfigurationProvider : ConfigurationProvider
1414 {
15+ // Connection string prefixes for various services. These prefixes are used to identify connection strings in environment variables.
16+ // az webapp config connection-string set: https://learn.microsoft.com/en-us/cli/azure/webapp/config/connection-string?view=azure-cli-latest#az-webapp-config-connection-string-set
17+ // Environment variables and app settings in Azure App Service: https://learn.microsoft.com/en-us/azure/app-service/reference-app-settings?tabs=kudu%2Cdotnet#variable-prefixes
1518 private const string MySqlServerPrefix = "MYSQLCONNSTR_" ;
1619 private const string SqlAzureServerPrefix = "SQLAZURECONNSTR_" ;
1720 private const string SqlServerPrefix = "SQLCONNSTR_" ;
1821 private const string CustomConnectionStringPrefix = "CUSTOMCONNSTR_" ;
22+ private const string PostgreSqlServerPrefix = "POSTGRESQLCONNSTR_" ;
23+ private const string ApiHubPrefix = "APIHUBCONNSTR_" ;
24+ private const string DocDbPrefix = "DOCDBCONNSTR_" ;
25+ private const string EventHubPrefix = "EVENTHUBCONNSTR_" ;
26+ private const string NotificationHubPrefix = "NOTIFICATIONHUBCONNSTR_" ;
27+ private const string RedisCachePrefix = "REDISCACHECONNSTR_" ;
28+ private const string ServiceBusPrefix = "SERVICEBUSCONNSTR_" ;
1929
2030 private readonly string _prefix ;
2131 private readonly string _normalizedPrefix ;
@@ -83,6 +93,34 @@ internal void Load(IDictionary envVariables)
8393 {
8494 HandleMatchedConnectionStringPrefix ( data , SqlServerPrefix , "System.Data.SqlClient" , key , value ) ;
8595 }
96+ else if ( key . StartsWith ( PostgreSqlServerPrefix , StringComparison . OrdinalIgnoreCase ) )
97+ {
98+ HandleMatchedConnectionStringPrefix ( data , PostgreSqlServerPrefix , "Npgsql" , key , value ) ;
99+ }
100+ else if ( key . StartsWith ( ApiHubPrefix , StringComparison . OrdinalIgnoreCase ) )
101+ {
102+ HandleMatchedConnectionStringPrefix ( data , ApiHubPrefix , null , key , value ) ;
103+ }
104+ else if ( key . StartsWith ( DocDbPrefix , StringComparison . OrdinalIgnoreCase ) )
105+ {
106+ HandleMatchedConnectionStringPrefix ( data , DocDbPrefix , null , key , value ) ;
107+ }
108+ else if ( key . StartsWith ( EventHubPrefix , StringComparison . OrdinalIgnoreCase ) )
109+ {
110+ HandleMatchedConnectionStringPrefix ( data , EventHubPrefix , null , key , value ) ;
111+ }
112+ else if ( key . StartsWith ( NotificationHubPrefix , StringComparison . OrdinalIgnoreCase ) )
113+ {
114+ HandleMatchedConnectionStringPrefix ( data , NotificationHubPrefix , null , key , value ) ;
115+ }
116+ else if ( key . StartsWith ( RedisCachePrefix , StringComparison . OrdinalIgnoreCase ) )
117+ {
118+ HandleMatchedConnectionStringPrefix ( data , RedisCachePrefix , null , key , value ) ;
119+ }
120+ else if ( key . StartsWith ( ServiceBusPrefix , StringComparison . OrdinalIgnoreCase ) )
121+ {
122+ HandleMatchedConnectionStringPrefix ( data , ServiceBusPrefix , null , key , value ) ;
123+ }
86124 else if ( key . StartsWith ( CustomConnectionStringPrefix , StringComparison . OrdinalIgnoreCase ) )
87125 {
88126 HandleMatchedConnectionStringPrefix ( data , CustomConnectionStringPrefix , null , key , value ) ;
0 commit comments