ASP.NET web.config: configSource vs. atributos de archivo

187

Dentro de un web.configarchivo en una aplicación ASP.NET, algunas secciones de configuración, como appSettingsy connectionStrings, admiten los atributos filey configSource.

¿Cuál es la diferencia entre usar file-attribute y configSource-attribute? ¿Cuándo debe usar qué atributo y puede usar ambos?

<?xml version="1.0"?>
<configuration>
  <appSettings file="AppSettings.config">
  </appSettings>
  <connectionStrings configSource="ConnectionStrings.config">      
  </connectionStrings>
  <!-- ... -->
</configuration>
Seb Nilsson
fuente

Respuestas:

300

file atributo

configSource atributo

El fileatributo 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 configSourceatributo contiene la configuración de la sección para la que declara configSource. Por ejemplo, si utiliza el configSourceatributo 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 fileatributo se fusionará con la configuración en la appSettings sección del web.configarchivo. Mientras tanto, la configSource hace no admite la combinación, significa que vas a tener que mover toda la configuración de la sección en el archivo externo.

http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx

Massimiliano Peluso
fuente
10
Además, el atributo "archivo" le permite especificar archivos fuera del árbol de directorios inmediato, lo cual es importante para compartir configuraciones comunes entre diferentes sitios. Desafortunadamente, el atributo "configsource" lo restringe a los archivos dentro del árbol actual, por lo que para las configuraciones compartidas necesita especificar un directorio virtual en IIS.
Ed Graham
66
¡Mi comentario anterior no era del todo correcto, y aparentemente me he perdido la ventana de cinco minutos algo arbitraria para editarlo! No puede establecer un directorio virtual en IIS para permitir que los archivos "configsource" vivan fuera del árbol de directorios inmediato. Entonces eso realmente es bastante limitante. Lo resolví usando un punto de unión (o un enlace duro NTFS) pero no es exactamente bonito ...
Ed Graham
1
WAO! Gran respuesta ... esto realmente me ayudó: will not cause web application to restart when modifying the specified file. Necesito que la aplicación se reinicie al modificar cualquier configuración en el archivo externo para una sección personalizada y así es el camino a seguir configSource. Interesante es que estaba usando filey las diferentes secciones estaban trabajando. fileTambién funciona para otras secciones, appSettingspero hay esas trampas bien explicadas en la respuesta.
Leniel Maccaferri
44
Me gustaría añadir a la lista configSource: It must refer to a file in the same directory or in a subdirectory as the configuration file.. Y también a la lista de archivos: It can reside outside the directory of the configuration file itself..
frankhommers
2
Enlace actualizado para el elemento AppSettings - docs.microsoft.com/en-us/dotnet/framework/configure-apps/…
Jarrod