En el caso de las cadenas de conexión, de hecho es posible apuntar a un archivo compartido. Si el archivo compartido está en una red UNC, requiere privilegios administrativos en la máquina donde se alojará la aplicación.
Solución: En su web.config, use configSource para apuntar a un archivo de configuración local. Debido a las restricciones de .Net, debe estar al nivel del archivo de configuración raíz o por debajo del mismo. Acabo de apuntar a un archivo en la carpeta de aplicación en sí:
<connectionStrings configSource="ConnectionStrings.config" />
En una ubicación compartida que sea accesible por el usuario del grupo de aplicaciones, añadir el archivo de configuración que contiene las cadenas de conexión compartida. Este archivo no debe contener ningún xml que no sea la sección de connectionStrings. El archivo compartido ConnectionStrings.config se ve así:
<connectionStrings>
<clear/>
<add name="connString1" connectionString="connString1 info goes here"/>
<add name="connString2" connectionString="connString2 info goes here"/>
</connectionStrings>
Ahora el truco. Cree un enlace simbólico de Windows en su carpeta de aplicaciones apuntando al archivo de configuración compartido externo. Necesitará privilegios de administrador para hacer esto:
mklink ConnectionStrings.config \\someServer\someShare\someFolder\ConnectionStrings.config
Acabamos burlado .Net. El sistema de configuración usará la configuración configSource para buscar cadenas de conexión en un archivo local llamado ConnectionStrings.config. El enlace simbólico se ve como un archivo en .Net, y el enlace simbólico se resuelve en el archivo de configuración compartido.
Advertencias: Los cambios en el archivo compartido no desencadenan automáticamente el reinicio de una aplicación en .Net. En el caso de IIS, el sitio web o grupo de aplicaciones deberá reiniciarse manualmente.
Debido a la necesidad de privilegios administrativos para crear el enlace simbólico, este enfoque puede no funcionar para todos. Hay dos alternativas relacionadas que pueden funcionar si el archivo compartido está en la misma unidad lógica: enlaces duros y cruces. Consulte this discussion y this discussion para obtener más información.
nice - mucho más fácil de entender para la gente que mi camino –
hola, me gusta esta respuesta y he intentado aplicarla a mi propio proyecto, y todo parece funcionar bien cuando "publico" mi aplicación (db.config se copia a la raíz web como dijiste), pero no cuando se depura a través de VS y Cassini. En cambio, aparece la excepción "No se puede abrir el archivo configSource 'db.config'". ¿Hay algo que me falta para poder hacer esto? ¡Gracias! – Funka
Por supuesto, justo después de que decido desglosarme y publicar un comentario pidiendo ayuda, lo averiguo enseguida. Noté que mi db.config también se ha copiado en la carpeta/bin /, así que actualicé mi web.config para anteponer esta ruta en su 'configSource' y todo parece ir bien. ¡Gracias de nuevo! – Funka