Des différences de comportement entre le Système.Web.La Configuration.WebConfigurationManager et du Système.La Configuration.ConfigurationManager

J'ai eu quelques difficultés sur un serveur de test avec un ASP.NET site web. J'ai raté son coup, et a la maison
répertoire du Site Web par Défaut signalé à la mauvaise place. Quand j'ai essayé:

ConfigurationManager.ConnectionStrings["connectionString"]; 

il a retourné null, mais

using System.Web.Configuration;

/* ... */

var rootWebConfig =
    WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);

WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);

rootWebConfig.ConnectionStrings.ConnectionStrings["connectionString"].ConnectionString;` 

retourné la chaîne de connexion approprié.

Quelles sont les différences entre les deux approches?

EDIT: Ce que je suis vraiment se poser est, pourquoi ne le ConfigurationManager approche échoue lorsque le répertoire est défini de manière incorrecte, mais réussit, et l' WebConfigurationManager réussit indépendamment de si le répertoire de base est-elle correctement réglée? Existe-il d'autres différences, telles que les hypothèses sur le contrôle d'accès?

OriginalL'auteur David Hodgson | 2010-01-13