2011-12-03 30 views
22

En mi proyecto actual, tengo algunas cadenas de conexión que son válidas para máquinas de desarrollo local:¿Cómo uso la transformación Web.Config en mis cadenas de conexión?

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

¿Cómo puedo usar el Web.Config transforma convertir de esta expresión a una validez de nuestro servidor de producción? El servidor de producción se podría ser algo como:

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

La sintaxis no es evidente para mí, y estoy completamente fallar en la Grokking page en él.

Respuesta

37

Esto funciona para mí, pero a mí también me ha parecido un poco raro a veces. Tendrá que crear otro archivo llamado Web.Config.Release y llenarlo con lo siguiente:

<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> 
+0

La parte appSettings es opcional dependiendo de cómo configure su conexión. – sbeskur

+0

¿Qué hace exactamente esa parte 'appSettings'? Además, ¿es seguro asumir que puedo encriptar mis 'connectionStrings' transformados usando' aspnet_regiis -pef'? –

+0

Utilizo la configuración de la aplicación en caso de que tenga múltiples cadenas de conexión Db local frente a una alojada en una máquina diferente. Es puramente práctico para que yo pueda usar la aplicación para decidir qué uso db. (Realmente debería haberlo dejado fuera de este ejemplo) – sbeskur

7

No debería ser necesario para crear un nuevo archivo, que debe estar en el Explorador de soluciones, expanda Web. config, y abra Web.Release.config.

Scott Allan tiene un buen video en él here (en Configuración e implementación> Transformaciones de configuración).

+0

¿Alguna posibilidad de volver a vincular el video? Parece que el pluralsight ha cambiado su estructura de catálogo desde 2011 :-( – 5arx

+0

El enlace de video ha sido actualizado. – JasonH

+1

Este video fue justo lo que necesitaba. Gracias. – MartinJH

Cuestiones relacionadas