Aunque esto es algo muy poco conocido por los programadores de ASP.NET, es posible mover secciones completas de la configuración a sus propios archivos independientes de web.config. Ello se consigue usando el atributo configSource en la sección correspondiente. Por ejemplo, podemos escribir en el nodo ConnectionStrings lo siguiente:

<connectionStrings configSource="conexiones.config"/> 

y ahora tener un archivo independiente llamado conexiones.config que contenga esa sección completa:

<connectionStrings> 
<add name="Clientes" connectionString="..."/>
<add name="Principal" connectionString="..."/> </connectionStrings>

Esto puede resultar útil en muchas ocasiones. Por ejemplo, podemos cambiar más fácilmente entre los ajustes de producción y de desarrollo, manteniendo en común el resto de la configuración. Otro motivo sería proteger de manera especial esa sección y otorgarle sus propios permisos de lectura y escritura.

Uno de los motivos más importantes sería el evitar que se reinicie la aplicación ante determinados cambios. Por ejemplo si sacamos a un archivo la sección AppSettings de ajustes personales, a lo mejor no necesitamos que se reinicie la aplicación sólo modificar algo en ella. Al separarla a su propio archivo conseguiremos este efecto ya que cambia el archivo externo pero no el web.config, y aunque modifiquemos algo en él no se fuerza el reinicio.

Ello es debido a que en machine.config (la configuración principal del equipo) la sección AppSettings está marcada con el atributo restartOnExternalChanges="false". Hay otras secciones que tiene este atributo a true por lo que si se cambia el archivo externo sí que provocaremos un reinicio.

Extraido del curso de preparación del examen 70-528 de desarrollo Web de campusMVP.

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor