ASP.NET web.config: configSource vs. attributi del file


187

All'interno di un web.configfile in un'applicazione ASP.NET alcune sezioni di configurazione, come appSettingse connectionStrings, supportano gli attributi filee configSource.

Qual è la differenza tra l'utilizzo di file-attribute e configSource-attribute? Quando dovresti usare quale attributo e puoi usare entrambi?

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

Risposte:


300

file attributo

configSource attributo

L' fileattributo specifica un file esterno contenente le impostazioni personalizzate come te nella voce appSettings del file web.config. Nel frattempo, il file esterno specificato configSourcenell'attributo contiene le impostazioni per la sezione per cui si dichiara la configSource. Ad esempio, se si utilizza l' configSourceattributo della sezione pagine, il file esterno conterrà le impostazioni per la sezione pagine.

Le impostazioni personalizzate dichiarate nella configurazione esterna specificata filenell'attributo verranno unite alle impostazioni nella appSettings sezione del web.configfile. Nel frattempo, il configSource non non supporta la fusione, significa che dovrete spostare l'intera impostazioni della sezione nel file esterno.

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


10
Inoltre, l'attributo "file" consente di specificare i file all'esterno della struttura di directory immediata, che è importante per condividere le impostazioni comuni tra siti diversi. Sfortunatamente, l'attributo "configsource" ti limita ai file all'interno dell'albero corrente, quindi per le impostazioni condivise devi specificare una directory virtuale in IIS.
Ed Graham,

6
Il mio commento di cui sopra non era del tutto corretto, e apparentemente mi è sfuggita la finestra un po 'arbitraria di cinque minuti per modificarlo! Non è possibile impostare una directory virtuale in IIS per consentire ai file "configsource" di vivere all'esterno dell'albero di directory immediato. Quindi è davvero abbastanza limitante. L'ho risolto usando un punto di giunzione (o hard link NTFS) ma non è esattamente carino ...
Ed Graham,

1
WAO! Grande risposta ... questo mi ha veramente aiutato: will not cause web application to restart when modifying the specified file. Ho bisogno di riavviare l'app quando modifico qualsiasi impostazione nel file esterno per una sezione personalizzata e quindi la strada da percorrere è configSource. Interessante è che stavo usando filee le diverse sezioni funzionavano. filefunziona anche per sezioni diverse da quelle appSettingsma ci sono quei gotcha ben spiegati nella risposta.
Leniel Maccaferri,

4
Vorrei aggiungere all'elenco configSource: It must refer to a file in the same directory or in a subdirectory as the configuration file.. E anche per l'elenco di file: It can reside outside the directory of the configuration file itself..
Frankhommers,

2
Link aggiornato per l'elemento appSettings - docs.microsoft.com/en-us/dotnet/framework/configure-apps/…
Jarrod
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.