Qual é a diferença entre o WebConfigurationManager e o ConfigurationManager?


102

Qual é a diferença entre o WebConfigurationManagere o ConfigurationManager?

Quando devo usar um em vez do outro?

ATUALIZADA

Acabei de olhar para o WebConfigurationManagere, por algum motivo, você não pode acessar as strings de conexão como faz no ConfigurationManager(como uma matriz). Alguém pode me dizer por que o MS fez assim? Parece ser difícil obter a string de conexão necessária usando o WebConfigurationManager.

ATUALIZADO NOVAMENTE com CAVEAT!

Se você não tiver uma referência ao System.Configurationnamespace adicionado ao seu projeto, o Visual Studio mostrará um erro quando você tentar e acessar o WebConfigurationManager.ConnectionStringscomo um array!


1
Não acho que "advertência" seja muito precisa. Eu uso system.web.configuration para strings de conexão sem a necessidade de system.configuration
sclarson

Respostas:


95

WebConfigurationManger sabe como lidar com a herança de configuração em um aplicativo da web. Como você sabe, pode haver vários arquivos web.config em um aplicativo - um na raiz do site e qualquer número em subdiretórios. Você pode passar o caminho para o método GetSection () para obter uma possível configuração substituída.

Se olharmos para WebConfigurationManager com Reflector, as coisas serão claras:

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 é feito especificamente para aplicativos ASP.NET.

WebConfigurationManager fornece métodos adicionais para carregar arquivos de configuração aplicáveis ​​a aplicativos da web.

O ConfigurationManager também fornece métodos para carregar arquivos de configuração aplicáveis ​​a aplicativos ".exe".

Eu sugiro dar uma olhada em WebConfigurationManager e ver se ele fornece algo que você simplesmente não pode fazer com o ConfigurationManager e usá-lo em vez disso, caso contrário, usar o ConfigurationManager tornará muito mais fácil ter seu código usado sem problemas entre aps da web e desktop.


4

Embora WebConfigurationManager esteja localizado na montagem System.Web, a ConnectionStringSettingsCollection que ele retorna está localizada em System.Configuration.

Se você está recebendo o erro

Não é possível aplicar indexação com [] a uma expressão do tipo 'System.Configuration.ConnectionStringSettingsCollection'

ao tentar acessar o índice da matriz ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

certifique-se de ter uma referência ao assembly System.Configuration


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.