2013-07-10 19 views
5

Sto progettando un progetto di applicazione Web ASP.NET MVC4. Nella radice del mio progetto, ho il file standard predefinito Web.config con i miei elementi corrispondenti. In particolare, ho definito alcuni elementi appSettings. Come esempio estratto per dimostrare questo:Accesso alle impostazioni delle app da più file Web.config

<appSettings> 
    <add key="foo" value="bar" /> 
</appSettings> 

Naturalmente, posso accedere a questo elemento nel codice utilizzando ConfigurationManager.AppSettings["foo"]. Questo funziona perfettamente per me. Tuttavia, sto creando un pacchetto NuGet accanto al mio progetto. Il pacchetto è installato all'interno della propria directory nella directory Areas del mio progetto. Qui, nella root del mio pacchetto, ho un altro file Web.config. In questo modo, quando un altro utente importa il pacchetto NuGet, la configurazione per le risorse del pacchetto è nativa per il pacchetto. Lasciate che il pacchetto di Web.config contiene il seguente:

<appSettings> 
    <add key="dirEnabled" value="true" /> 
</appSettings> 

Giusto per chiarire, in termini di percorsi relativi, ora ho due file Web.config, uno a ./Web.config e uno a ./Areas/PackageName/Web.config.

All'interno del mio pacchetto, voglio recuperare il valore per dirEnabled. Per fare ciò, effettuo la chiamata: ConfigurationManager.AppSettings["dirEnabled"]. Tuttavia, questo genera un errore. Sembra che solo la raccolta di appSettings sia stata recuperata da ./Web.config e non dal mio file di configurazione del pacchetto. È possibile prelevare la raccolta di appSettings dal file di configurazione del mio pacchetto piuttosto che dal file di configurazione di root del progetto?

+0

vedi anche http://stackoverflow.com/questions/11351106/multiple-appsettings-files-is-it-possible –

risposta

7

figured it out! Per utilizzare un file di configurazione diverso, incorporare WebConfigurationmanager. Quindi, per accedere ai appSettings di ./Areas/PackageName/Web.config, è sufficiente utilizzare:

var config = WebConfigurationManager.OpenWebConfiguration("~/Areas/PackageName"); 
string dirE = config.AppSettings.Settings["dirEnabled"].Value; 
2

Prova con

<appSettings file="<Path_To_Second_Web.Config>"> 
    ... 
</appSettings > 

nel web.config del progetto

http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx

+0

Grazie per la risposta! Sta ancora generando un errore che indica che non riesce a trovare il valore, tuttavia. – mattkgross

+0

Probabilmente troverai qualcosa qui http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx –

Problemi correlati