2009-02-26 14 views

risposta

28

Yes, you do:

NET Framework leggerà l'app.config una volta, e mai toccare di nuovo l'app.config. Ecco perché è necessario riavviare l'applicazione per raccogliere la modifica.

Perché il framework .Net non rileva che app.config è cambiato e aggiorna tutti i dati di configurazione?

Il motivo è semplice, questo non è possibile in generale. uso

Let “Immagino che questo potrebbe essere fatto” logica di Raymond qui ...

4

Sì.

Presumibilmente si intende il file appname.exe.config?

8

No, non si hanno a. Ma se si desidera che le modifiche in app.config abbiano effetto, potrebbe essere necessario riavviarlo. Oppure potresti voler implementare un meccanismo di watcher del file di configurazione personalizzato che altererebbe le impostazioni dei servizi al volo.

+7

"se si desidera che le modifiche in app.config abbiano effetto", penso che sia implicito in la domanda! –

+0

Fantastico, proprio quando sono fuori dai polli di gomma. –

+0

@Gecat: gamma libera? –

1

Questo va oltre lo scopo della domanda, ma vorrei indovinare che si desidera apportare modifiche solo in alcune sezioni "specifiche dell'applicazione" (appSettings, ecc.).

Si sta meglio scrivendo il proprio gestore di sezioni di configurazione, che monitora il proprio file di configurazione - l'approccio nlog uses. Controllare la sezione "Riconfigurazione automatica".

2

Di solito sì. Tuttavia, è possibile scrivere un servizio Windows che metterà un monitor file sul file di configurazione e rileverà una modifica e la applicherà senza la necessità di riavviare.

Ad esempio, il framework di registrazione Log4Net offre un tale meccanismo per il suo file di configurazione.

7

L'ho usato prima. In sostanza, questo ricarica la sezione specificata prima di recuperare il valore. Piuttosto possibilmente meno efficiente di un osservatore di file di configurazione che si aggiorna su richiesta, ma sicuramente efficacemente usato con attenzione.

ConfigurationManager.RefreshSection("appSettings") 
    sValue = ConfigurationManager.AppSettings(name) 
+0

Questa è una grande scoperta! – d219

Problemi correlati