Diferenças de comportamento entre System.Web.Configuration.WebConfigurationManager e System.Configuration.ConfigurationManager

Eu tive alguns problemas em um servidor de teste com um site ASP.NET. Eu goofed, e tinha o diretório home do site padrão apontou para o lugar errado. Quando eu tentei:

ConfigurationManager.ConnectionStrings["connectionString"]; 

ele retornou nulo, mas

using System.Web.Configuration;

/* ... */

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

WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);

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

retornou a string de conexão correta.

Quais são as diferenças entre as duas abordagens?

EDIT: O que eu estou realmente perguntando é, por que oConfigurationManager a abordagem falha quando o diretório inicial está definido incorretamente, mas é bem-sucedidoWebConfigurationManager tem sucesso independentemente de o diretório base estar definido corretamente? Existem outras diferenças, como suposições sobre o controle de acesso?

questionAnswers(2)

yourAnswerToTheQuestion