web-dev-qa-db-fra.com

Comment utiliser la transformation Web.Config sur mes chaînes de connexion?

Dans mon projet actuel, j'ai quelques chaînes de connexion valides pour les machines de développement local:

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Data Source=localhost;Initial Catalog=MyDB;Integrated Security=SSPI"
  </connectionStrings>
....
</configuration>

Comment utiliser les transformations Web.Config pour convertir de cette expression en une expression valide pour notre serveur de production? Le serveur de production ressemblerait à:

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="Data Source=IPAddress,Port;Initial Catalog=SomeOtherDB;User ID=TopSecretUsername;Password=SecurePassword"
  </connectionStrings>
....
</configuration>

La syntaxe n'est pas évidente pour moi, et j'échoue complètement à grogner le page dessus.

33
Mike Bailey

Cela fonctionne pour moi, mais j'ai aussi trouvé que c'était un peu floconneux parfois. Vous devrez créer un autre fichier appelé Web.Config.Release et le remplir avec les éléments suivants:

<configuration xmlns:xdt="http://schemas.Microsoft.com/XML-Document-Transform">

  <connectionStrings>
    <add name="local" connectionString="Data Source=IPAddress,Port;Initial Catalog=SomeOtherDB;User ID=TopSecretUsername;Password=SecurePassword" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>

  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />

  </system.web>
    <appSettings>
        <add key="default_db_connection" value="local" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    </appSettings>
</configuration>
50
sbeskur

Vous ne devriez pas avoir besoin de créer un nouveau fichier, il doit se trouver dans l'Explorateur de solutions, développer Web.config et ouvrir Web.Release.config.

Scott Allan a une bonne vidéo à ce sujet ici (sous Configuration et déploiement> Transformations de configuration).

8
Garrett Fogerlie