2012-09-05 12 views
5

Voglio dividere web.config e prendere queste impostazioni in un file esterno.Come dividere web.config?

<customErrors mode="Off" defaultRedirect="~/Home/ErrorPage"> 
    <error statusCode="403" redirect="~/Home/ErrorPage"/> 
    <error statusCode="404" redirect="~/Home/ErrorPage"/> 
</customErrors> 

<system.net> 
    <mailSettings> 
    <smtp deliveryMethod="Network" from="[email protected]"> 
     <network host="smtp.company.com" port="25" password="" userName=""/> 
    </smtp> 
    </mailSettings> 
</system.net> 

utilizzare

<appSettings file="my.config"/> 

per avere il mio impostazioni di fuori.

Ma per quanto riguarda le impostazioni standard?

risposta

7

Molte (anche se non tutte) delle sezioni hanno una proprietà configSource, che è possibile utilizzare in modo molto simile a come si utilizza la proprietà file della sezione appSettings.

More info at MSDN


<customErrors configSource="MyErrors.config" /> 

    <system.net> 
    <mailSettings> 
     <smtp configSource="MySmtp.config" /> 
    </mailSettings> 
    </system.net> 
+0

Buona soluzione. Grazie! Lo svantaggio è che devo creare due file di configurazione per ogni impostazione. – podeig

+0

Can 'configSource' fa riferimento allo stesso file per più sezioni, o è necessario creare un file separato per ogni sezione? – crush

0

È possibile separare alcune sezioni del file, non si può prendere tutto fuori in file separati.

Si dovrebbe anche considerare ciò che si ottiene facendo ciò.

+0

Una cosa ottenuta è la configurazione dell'ambiente senza la necessità di creare configurazioni di build individuali per ogni ambiente solo per sfruttare la trasformazione di web.config (che è comunque un abuso del sistema in ogni caso). È possibile lasciare questi file di configurazione esterni specializzati nel sistema dell'ambiente e lasciare la configurazione globale che potrebbe cambiare da pubblicare a pubblicare nel web.config principale. – crush