В чем разница между WebConfigurationManager и ConfigurationManager? - PullRequest
97 голосов
/ 30 марта 2009

В чем разница между WebConfigurationManager и ConfigurationManager?

Когда я должен использовать один поверх другого?

ОБНОВЛЕНО

Я только что посмотрел на WebConfigurationManager, и по какой-то причине вы не можете получить доступ к строкам соединения, как в ConfigurationManager (как массив). Может кто-нибудь сказать мне, почему MS сделал это так? Кажется, будет сложно получить нужную строку подключения, используя WebConfigurationManager.

ВНОВЬ ОБНОВЛЕНО CAVEAT!

Если у вас нет ссылки на пространство имен System.Configuration, добавленное в ваш проект, Visual Studio выдаст ошибку при попытке доступа к WebConfigurationManager.ConnectionStrings как массиву!

Ответы [ 4 ]

92 голосов
/ 30 марта 2009

WebConfigurationManger знает, как обращаться с наследованием конфигурации в веб-приложении. Как вы знаете, в одном приложении может быть несколько файлов web.config - один в корне сайта и любое количество в подкаталогах. Вы можете передать путь методу GetSection (), чтобы получить возможную переопределенную конфигурацию.

Если бы мы посмотрели на WebConfigurationManager с Reflector, тогда все ясно:

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

public static object GetSection(string sectionName, string path)
{
    ...
    return HttpConfigurationSystem.GetSection(sectionName, path);
}
25 голосов
/ 30 марта 2009

WebConfigurationManager создан специально для приложений ASP.NET.

WebConfigurationManager предоставляет дополнительные методы для загрузки файлов конфигурации, применимых к веб-приложениям.

ConfigurationManager также предоставляет методы для загрузки файлов конфигурации, применимых к приложениям ".exe".

Я бы посоветовал взглянуть на WebConfigurationManager и посмотреть, предоставляет ли он что-либо, чего вы просто не можете сделать с ConfigurationManager, и использовать его вместо этого, в противном случае использование ConfigurationManager значительно упростит беспрепятственное использование кода между сетью и рабочим столом АПС.

4 голосов
/ 31 января 2015

Хотя WebConfigurationManager находится в сборке System.Web, возвращаемая коллекция ConnectionStringSettingsCollection находится в System.Configuration.

Если вы получаете сообщение об ошибке

Невозможно применить индексирование с помощью [] к выражению типа 'System.Configuration.ConnectionStringSettingsCollection'

при попытке доступа к индексу массива ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

убедитесь, что у вас есть ссылка на сборку System.Configuration

3 голосов
/ 30 марта 2009

Не уверен, что вы имеете в виду о строках подключения.

Вызов WebConfigurationManager.ConnectionStrings возвращает коллекцию System.Configuration.ConnectionStringSettingsCollection, такую ​​же, как если бы вы вызвали ConfigurationManager.ConnectionStrings .

В противном случае, как говорит XOR, он предназначен для обработки нескольких иерархических веб-конфигураций, объединяя их по мере необходимости при перемещении по папкам в приложении.

...