В чем разница между WebConfigurationManager и ConfigurationManager?
В чем разница между We bConfigurationManager и ConfigurationManager?
Когда я должен использовать один над другим?
ОБНОВЛЕНО
Я только что посмотрел на WebConfigurationManager, и по какой-то причине вы не можете получить доступ к строкам соединения, как вы делаете в ConfigurationManager (например, массив). Может кто-нибудь сказать мне, почему MS сделал это так? Кажется, будет сложно получить нужную строку соединения с помощью WebConfigurationManager.
ОБНОВЛЯЕТСЯ СНОВА!
Если у вас нет ссылки на пространство имен "System.Configuration", добавленное в ваш проект, тогда Visual Studio выдаст ошибку при попытке доступа к WebConfigurationManager.ConnectionStrings как к массиву!
4 ответа
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);
}
WebConfigurationManager сделан специально для приложений ASP.NET.
WebConfigurationManager предоставляет дополнительные методы для загрузки файлов конфигурации, применимых к веб-приложениям.
ConfigurationManager также предоставляет методы для загрузки файлов конфигурации, применимых к приложениям ".exe".
Я бы посоветовал взглянуть на WebConfigurationManager и посмотреть, предоставляет ли он что-то, что вы просто не можете сделать с ConfigurationManager, и использовать его вместо этого, в противном случае использование ConfigurationManager значительно упростит беспрепятственное использование кода между веб-приложениями и приложениями для настольных компьютеров.
Не уверен, что вы имеете в виду о соединительных строках.
Вызов WebConfigurationManager.ConnectionStrings возвращает System.Configuration.ConnectionStringSettingsCollection, который совпадает с тем, который вы получили бы, если бы вызывали ConfigurationManager.ConnectionStrings.
В противном случае, как говорит XOR, он предназначен для работы с несколькими иерархическими web.configs, объединяя их по мере необходимости при перемещении по папкам в приложении.
Хотя WebConfigurationManager находится в сборке System.Web, возвращаемое им соединение ConnectionStringSettingsCollection находится в System.Configuration.
Если вы получаете ошибку
Невозможно применить индексирование с помощью [] к выражению типа 'System.Configuration.ConnectionStringSettingsCollection'
при попытке доступа к индексу массива...
WebConfigurationManager.ConnectionStrings["Name"].ConnectionString
убедитесь, что у вас есть ссылка на сборку System.Configuration