Sto cercando di creare una sezione file di configurazione personalizzata basata su AppSettings:Qual è la differenza tra ConfigurationManager.GetSection e Configuration.GetSection?
<configSections>
<section name="customConfiguration"
type="System.Configuration.AppSettingsSection,
System.Configuration,
Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"/>
</configSections>
quando ho provato a leggerlo tramite ConfigurationManager.GetSection ("customConfiguration") l'oggetto riscontrato è di tipo System.Configuration.KeyValueInternalCollection. Non ero in grado di leggere i valori di questa raccolta, anche se potevo vedere le chiavi e non potevo trasmetterle a AppSettingsSection.
This StackOverflow risposta suggerisce dovrei usare
Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
AppSettingsSection customSettingSection =
(AppSettingsSection)config.GetSection("customConfiguration");
Questo ha funzionato. La mia domanda è: qual è la differenza tra ConfigurationManager.GetSection() e Configuration.GetSection()? Quando dovrei usarne uno e quando dovrei usare l'altro?
Quindi Configuration.GetSection è per le app client, ottenere la sezione della configurazione utente specificata (per tutti gli utenti, il profilo locale dell'utente corrente o il profilo di roaming dell'utente corrente, in base a ConfigurationUserLevel specificato in OpenExeConfiguration)? E ConfigurationManager.GetSection ottiene la sezione della configurazione predefinita, che per le app client è la combinazione di tutte e tre le configurazioni utente (tutti gli utenti, il profilo locale dell'utente corrente, il profilo di roaming dell'utente corrente)? Perché allora i due metodi GetSection restituiscono tipi di oggetto diversi? –
'System.Configuration.GetSection()' è generico e può essere utilizzato sia per applicazioni web che client, mentre 'ConfigurationManager.GetSection()' è un wrapper ottimizzato specificamente per le app client. – Claies
@Claies significa che non esiste un modo predefinito per usare 'ConfigurationManager.OpenMappedExeConfiguration()' per aprire un file di configurazione diverso e farlo funzionare bene usando il suo '' Configuration.GetSection() ''per caricare una sezione. Poiché solo 'ConfigurationManager.GetSection()' "funziona bene" ma utilizza la configurazione predefinita dell'applicazione – FRoZeN