Solución:
- Si el archivo no existe, no se bloqueará, simplemente se ignorará.
- La configuración externa debe contener el
<appSettings>
nodo, por lo que su primer ejemplo es correcto. - El valor en el archivo externo tendrá prioridad, si no hay ningún valor presente, se usa el valor app.config.
¿Eso cubre todo?
Una de las mejores respuestas sobre el tema está aquí: ASP.NET web.config: configSource vs.Atributos de archivo – Crédito a @Massimiliano Peluso
file
atributo
- Especifica una ruta relativa a un archivo externo que contiene opciones de configuración de aplicaciones personalizadas.
- específico para el
appSettings
sección - voluntad unir (y anular) la configuración en el archivo .config
- no hará que la aplicación web se reinicie al modificar el archivo especificado
- http://msdn.microsoft.com/en-US/library/ms228154(v=vs.100).aspx
- El uso de Configuration.AppSettings.Settings.Add API dará como resultado que todas las configuraciones se fusionen nuevamente en la
.config
en una llamada Configuration.Save. - desde .NET 1.1
- La excepción no se lanza si el archivo no existe.
configSource
atributo
- se puede aplicar a la mayoría de las secciones de un archivo de configuración, no solo
appSettings
- anulará el toda la sección con el archivo externo, no fusionar
- PUEDE hacer que la aplicación web se reinicie
- http://msdn.microsoft.com/en-US/library/system.configuration.sectioninformation.configsource(v=vs.100).aspx
- El uso de la API Configuration.AppSettings.Settings.Add dará como resultado que todas las configuraciones se agreguen al archivo especificado en
configSource
en una llamada Configuration.Save. - desde .NET 2.0
-
System.Configuration.ConfigurationErrorsException
se lanza si el archivo fuente de configuración no existe.
los file
atributo especifica un archivo externo que contiene configuraciones personalizadas como lo hace en la entrada appSettings del archivo web.config. Mientras tanto, el archivo externo especificado en el configSource
El atributo contiene la configuración de la sección para la que declara configSource. Por ejemplo, si utiliza el atributo configSource de la sección de páginas, el archivo externo contendrá la configuración de la sección de páginas.
La configuración personalizada declarada en la configuración externa especificada en el atributo del archivo se fusionará con la configuración en la sección appSettings en el archivo web.config. Mientras tanto, configSource no admite la fusión, lo que significa que tendrá que mover toda la configuración de la sección al archivo externo.
http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx