web-dev-qa-db-fra.com

Comment placez-vous des variables environnementales dans web.config?

Je suis actuellement à la suite de ces didacticiels , et je souhaite appeler la chaîne de texte en clair à partir des paramètres d'application Azure pour les applications Web. J'ai l'impression que les variables d'environnement sont tilisées pour les fichiers non config . Cependant, je souhaite utiliser la même méthodologie pour les fichiers web.config.

  <connectionStrings configSource="/config/ConnectionStrings.config">
    <add name="DefaultConnection" connectionString="@Environment.GetEnvironmentalVariable('SQLAZURECONNSTR_DefaultConnection')" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings file="config\AppSettingsSecret.config">
    <!-- Code Removed for Conciseness-->
    <add key="mailAccount" value="@Environment.GetEnvironmentalVariable('APPSETTING_mailAccount')" />
    <add key="mailPassword" value="@Environment.GetEnvironmentalVariable('APPSETTING_mailPassword')" />
    <!-- Twilio-->
    <add key="TwilioSid" value="@Environment.GetEnvironmentalVariable('APPSETTING_TwilioSid')" />
    <add key="TwilioToken" value="@Environment.GetEnvironmentalVariable('APPSETTING_TwilioToken')" />
    <add key="TwilioFromPhone" value="@Environment.GetEnvironmentalVariable('APPSETTING_TwilioFromPhone')" />
  </appSettings>

Remarque: j'ai inclus le configSource = "/ example /" pour les tests locaux.

20
Joseph Casey

Pour les applications, y compris les applications Web, sous Windows:

Les valeurs dans <appSettings> ne sont que des chaînes. Si vous souhaitez étendre les variables d'environnement, votre application devra le faire elle-même.

Une façon courante de procéder consiste à utiliser la syntaxe cmd%variable% puis en utilisant Environment.ExpandEnvironmentVariables pour les développer.

Sur Azure:

Les règles sont différentes (voir les liens dans la question): mais les valeurs semblent être dans des variables d'environnement donc, dans le fichier de configuration:

<add key='SomeSetting' value='%APPSETTING_some_key%'/>

puis récupérer:

var someSetting = Environment.ExpandEnvironmentVariables(
                     ConfigurationManager.AppSetting("SomeSetting"))

pourrait bien fonctionner.

26
Richard