2013-03-08 5 views
6

Sono curioso di sapere come il web.config viene caricato in un'applicazione, c'è qualche riferimento ai valori nel file web.config che effettivamente analizza il file web.config o all'avvio dell'applicazione carica i valori in un singleton o qualcosa del genere?Una volta avviata l'applicazione, come vengono letti i valori da web.config?

Questo è venuto in mente come ho voluto verificare la presenza di un valore nel web.config su una base per richiesta nei global.asax.cs:

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    if(ConfigurationManager.AppSettings["abc"] != null) 
    { 


    } 
} 

risposta

4

Quando un'applicazione riceve prima una richiesta, i file di configurazione vengono analizzati e le relative impostazioni caricate. Queste impostazioni vengono quindi memorizzate nella cache, in modo che qualsiasi chiamata successiva non richieda la ri-analisi dei file di configurazione. Ecco perché quando viene modificato un file di configurazione, l'applicazione si riavvia e viene ricompilata nuovamente.

http://msdn.microsoft.com/en-us/library/ms178685.aspx#calculating_configuration_settings_at_runtime

+1

Inoltre [Modifica dei file di configurazione ASP.NET] (http://msdn.microsoft.com/en-us/library/ackhksh7.aspx) – Brandon

3

La configurazione viene deserializzato durante l'avvio dell'applicazione in i corrispondenti tipi ConfigurationSection.

Questi sono normalmente implementati con proprietà di sola lettura, quindi possono essere effettivamente utilizzati in un singleton.

+0

No quello che voglio dire è, essi ConfigurationSection classi tipi che vengono generati, che sono molto veloci e poi a destra? Ad esempio, non cercare un file di configurazione per ogni ricerca? – loyalflow

+0

@ user1361315 - Non vengono generati. Esistono già - l'istanza viene popolata all'avvio e questo è ciò che è una query. Quindi il file viene letto solo una volta, all'avvio. – Oded