ASP.NET web.config: configSource et attributs de fichier

187

Dans un web.config-file dans une application ASP.NET, certaines sections de config, comme appSettingset connectionStrings, prennent en charge les attributs fileet configSource.

Quelle est la différence entre l'utilisation de file-attribute et de configSource-attribute? Quand devez-vous utiliser quel attribut et pouvez-vous utiliser les deux?

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

Réponses:

300

file attribut

configSource attribut

L' fileattribut spécifie un fichier externe contenant des paramètres personnalisés comme vous le faites dans l'entrée appSettings du fichier web.config. Pendant ce temps, le fichier externe spécifié dans l' configSourceattribut contient les paramètres de la section pour laquelle vous déclarez la source de configuration. Par exemple, si vous utilisez l' configSourceattribut de la section pages, le fichier externe contiendra les paramètres de la section pages.

Les paramètres personnalisés déclarés dans la configuration externe spécifiée dans l' fileattribut seront fusionnés avec les paramètres de la appSettings section du web.configfichier. En attendant, le configSource ne prend pas en charge la fusion, cela signifie que vous devrez déplacer tous les paramètres de la section dans le fichier externe.

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

Massimiliano Peluso
la source
10
En outre, l'attribut "fichier" vous permet de spécifier des fichiers en dehors de l'arborescence de répertoires immédiate, ce qui est important pour partager des paramètres communs entre différents sites. Malheureusement, l'attribut "configsource" vous restreint aux fichiers dans l'arborescence currrent, donc pour les paramètres partagés, vous devez spécifier un répertoire virtuel dans IIS.
Ed Graham
6
Mon commentaire ci-dessus n'était pas tout à fait correct, et j'ai apparemment manqué la fenêtre quelque peu arbitraire de cinq minutes pour le modifier! Vous ne pouvez pas définir un répertoire virtuel dans IIS pour autoriser les fichiers «configsource» à vivre en dehors de l'arborescence de répertoires immédiate. C'est donc vraiment assez limitatif. Je l'ai résolu en utilisant un point de jonction (ou lien dur NTFS) mais ce n'est pas tout à fait joli ...
Ed Graham
1
WAO! Très bonne réponse ... cela m'a vraiment aidé: will not cause web application to restart when modifying the specified file. J'ai besoin que l'application redémarre lors de la modification d'un paramètre dans le fichier externe pour une section personnalisée et la voie à suivre est donc la suivante configSource. Intéressant, c'est que j'utilisais fileet que les différentes sections fonctionnaient. filefonctionne également pour les sections autres que appSettingsmais il y a ces pièges bien expliqués dans la réponse.
Leniel Maccaferri
4
Je voudrais ajouter à la liste de configSource: It must refer to a file in the same directory or in a subdirectory as the configuration file.. Et aussi à la liste des fichiers: It can reside outside the directory of the configuration file itself..
frankhommers
2
Lien mis à jour pour l'élément appSettings - docs.microsoft.com/en-us/dotnet/framework/configure-apps/…
Jarrod