¿Cuál es la diferencia entre WebConfigurationManager y ConfigurationManager?

¿Cuál es la diferencia entre WebConfigurationManager y ConfigurationManager?

¿Cuándo debería usar uno sobre el otro?

ACTUALIZADO

Acabo de mirar el WebConfigurationManager, y por alguna razón, no puede acceder a las cadenas de conexión como lo hace en ConfigurationManager (como una matriz). ¿Alguien puede decirme por qué MS lo hizo así? Parece ser una molestia obtener la cadena de conexión que necesita utilizando WebConfigurationManager.

¡ACTUALIZADO NUEVAMENTE con CAVEAT!

Si no tiene una referencia al espacio de nombres “System.Configuration” agregado a su proyecto, entonces Visual Studio mostrará un error cuando intente acceder a WebConfigurationManager.ConnectionStrings como una matriz.

WebConfigurationManger sabe cómo lidiar con la herencia de configuración dentro de una aplicación web. Como sabe, podría haber varios archivos web.config en una aplicación, uno en la raíz del sitio y otro en subdirectorios. Puede pasar la ruta al método GetSection () para obtener una configuración anulada.

Si miramos WebConfigurationManager con Reflector, entonces las cosas están claras:

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

WebConfigurationManager está hecho específicamente para aplicaciones ASP.NET.

WebConfigurationManager proporciona métodos adicionales para cargar archivos de configuración aplicables a aplicaciones web.

ConfigurationManager también proporciona métodos para cargar archivos de configuración aplicables a las aplicaciones “.exe”.

Sugeriría echarle un vistazo a WebConfigurationManager y ver si le proporciona algo que simplemente no puede hacer con ConfigurationManager y usarlo en su lugar, de lo contrario, al utilizar ConfigurationManager será mucho más fácil que su código se use sin problemas entre las aplicaciones web y de escritorio.

Aunque WebConfigurationManager se encuentra en el ensamblado System.Web, ConnectionStringSettingsCollection que devuelve se encuentra en System.Configuration.

Si obtiene el error

No se puede aplicar la indexación con [] a una expresión de tipo ‘System.Configuration.ConnectionStringSettingsCollection’

al intentar acceder al índice de matriz …

 WebConfigurationManager.ConnectionStrings["Name"].ConnectionString 

asegúrese de tener una referencia al ensamblado System.Configuration

No estoy seguro de lo que quiere decir acerca de las cadenas de conexión.

Llamar a WebConfigurationManager.ConnectionStrings devuelve System.Configuration.ConnectionStringSettingsCollection, que es el mismo que obtendría si llamara a ConfigurationManager.ConnectionStrings .

De lo contrario, como dice XOR, está diseñado para manejar múltiples web.configs jerárquicos, combinándolos según sea necesario a medida que se desplaza por las carpetas en una aplicación.