He recopilado un resumen (afortunadamente útil) de las formas en que he investigado para lograr el objetivo de esta publicación, así como los problemas que tengo con ellos. Dígame si ha encontrado otras maneras que le gusten más, especialmente si resuelven los problemas que los métodos que menciono no lo hacen.Práctica recomendada de implementación de cadenas de conexión ASP.NET
Dejar las cadenas de conexión en web.config y utilizan la transformación TXD/MSDeploy para reemplazarlos con los ajustes de acuerdo a mi configuración de generación activa (por ejemplo, un archivo web.PublicTest.config). Mi problema con esto es fusionar y enterrar algunas configuraciones específicas del servidor en un archivo por lo demás globalmente idéntico con muchos elementos de configuración. Además, no puedo compartir definiciones de cadenas de conexión entre varias aplicaciones de nivel de igual.
Especifique un valor de configSource = "DeveloperLocalConnectionStrings.config" para las cadenas de conexión en web.config, y XDT transformará este valor para apuntar a uno de los múltiples archivos específicos del entorno en mi base de código. Mi problema con esto es que envío contraseñas para todos mis entornos a todos los destinos (además de SVN, por supuesto) y tengo secciones de configuración no utilizadas ubicadas en servidores que esperan ser utilizados accidentalmente.
Cadenas de conexión específicas en el archivo machine.config en lugar de web.config. Problema: quién diablos espera encontrar las cadenas de conexión en machine.config, y la probabilidad de colisiones sorpresa de nombres como resultado es alta.
Especifique un configSource = "LocalConnectionStrings.config", no transforme el valor y edite el xml del proyecto para excluir el despliegue de la configuración de la cadena de conexión. http://msdn.microsoft.com/en-us/library/ee942158.aspx#can_i_exclude_specific_files_or_folders_from_deployment - Es la mejor solución que he encontrado para hacer frente a mis necesidades de una aplicación web patentada (no distribuida), pero estoy paranoico, otro miembro del equipo vendrá un día y copiará el sitio de producción para probar por alguna razón, y listo ! La base de datos de producción ahora se está modificando durante UAT. (Actualización: descubrí que no puedo usar la publicación con un clic en este escenario, solo la línea de comando msdeploy con el parámetro -skip. Excluir un archivo como el anterior es lo mismo que configurarlo en "No" compilar acción en lugar de " Contenido ", y da como resultado que el paquete lo elimine del destino de implementación.)
Cablee el paquete de implementación para solicitar una cadena de conexión si aún no está configurado (todavía no sé cómo hacerlo) pero entiendo que es posible). Esto tendrá resultados similares al # 4 anterior.
Especifique un configSource = ".. \ ConnectionStrings.config". Sería genial para mis necesidades, ya que podría compartir la configuración entre las aplicaciones que elija, y no habría nada específico de la máquina en mi directorio de aplicaciones. Desafortunadamente, las rutas padre no están permitidas en este atributo (como en el caso de 'appSettings file =' ''); tenga en cuenta también que puede usar spiffily file = dentro de un configSource = referencia).
p.s. Algunas de estas soluciones se discuten aquí: ASP.Net configuration file -> Connection strings for multiple developers and deployment servers
1. Me gusta - sin embargo, se van a reír, pero en la actualidad de prueba y aplicación dev piscinas ejecutarse en el mismo servidor IIS. – Shannon
2. ¿podría aclarar por favor? ¿este archivo ini puede usarse desde los mismos métodos de biblioteca? específicamente, tengo una cadena de conexión con formato de Entity Framework. – Shannon
3. Gracias, no sabía que podía utilizar una clave asimétrica en una cadena de conexión o cifrar una cadena de conexión (lo que quiera decir). Investigaré para descubrir más sobre cómo se hace eso. – Shannon