Qual è la differenza tra WebConfigurationManager e ConfigurationManager?


102

Qual è la differenza tra il WebConfigurationManagere il ConfigurationManager?

Quando dovrei usarne uno sull'altro?

AGGIORNATO

Ho appena guardato il WebConfigurationManager, e per qualche motivo, non puoi accedere alle stringhe di connessione come fai in ConfigurationManager(come un array). Qualcuno può dirmi perché la SM l'ha fatta così? Sembra essere un problema ottenere la stringa di connessione necessaria utilizzando il file WebConfigurationManager.

AGGIORNATO ANCORA con CAVEAT!

Se non hai un riferimento allo System.Configurationspazio dei nomi aggiunto al tuo progetto, Visual Studio mostrerà un errore quando provi ad accedere WebConfigurationManager.ConnectionStringsa un array simile!


1
Non penso che "avvertimento" sia molto accurato. Uso system.web.configuration per le stringhe di connessione senza bisogno di system.configuration
sclarson

Risposte:


95

WebConfigurationManger sa come gestire l'ereditarietà della configurazione all'interno di un'applicazione web. Come sapete, potrebbero esserci diversi file web.config in un'unica applicazione: uno nella radice del sito e un numero qualsiasi nelle sottodirectory. Puoi passare il percorso al metodo GetSection () per ottenere una possibile configurazione sovrascritta.

Se guardassimo WebConfigurationManager con Reflector, le cose sarebbero chiare:

public static object GetSection(string sectionName)
{
    ...
    return ConfigurationManager.GetSection(sectionName);
}

public static object GetSection(string sectionName, string path)
{
    ...
    return HttpConfigurationSystem.GetSection(sectionName, path);
}

25

WebConfigurationManager è realizzato specificamente per le applicazioni ASP.NET.

WebConfigurationManager fornisce metodi aggiuntivi per caricare i file di configurazione applicabili alle applicazioni Web.

ConfigurationManager fornisce anche metodi per caricare i file di configurazione applicabili alle applicazioni ".exe".

Suggerirei di dare un'occhiata a WebConfigurationManager e vedere se ti fornisce qualcosa che semplicemente non puoi fare con ConfigurationManager e usarlo invece, altrimenti l'uso di ConfigurationManager renderà molto più facile usare il tuo codice senza problemi tra web e desktop aps.


4

Sebbene WebConfigurationManager si trovi nell'assembly System.Web, ConnectionStringSettingsCollection che restituisce si trova in System.Configuration.

Se ricevi l'errore

Impossibile applicare l'indicizzazione con [] a un'espressione di tipo "System.Configuration.ConnectionStringSettingsCollection"

durante il tentativo di accedere all'indice dell'array ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

assicurati di avere un riferimento all'assembly System.Configuration


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.