Яка різниця між WebConfigurationManager та ConfigurationManager?


102

Яка різниця між WebConfigurationManagerі від ConfigurationManager?

Коли я повинен використовувати один над іншим?

ОНОВЛЕНО

Я просто подивився на WebConfigurationManager, і чомусь ви не можете отримати доступ до рядків з'єднання, як це робиться в ConfigurationManager(як масив). Хтось може мені сказати, чому МС зробив це так? Здається, біль отримати рядки з'єднання, які вам потрібні за допомогою WebConfigurationManager.

ОНОВЛЕНИЙ ПРОТИ З CAVEAT!

Якщо у вас немає посилання на System.Configurationпростір імен, доданий до вашого проекту, Visual Studio покаже помилку, коли ви спробуєте отримати доступ до WebConfigurationManager.ConnectionStringsподібного масиву!


1
Я не думаю, що "застереження" є дуже точним. Я використовую system.web.configuration для підключення рядків без необхідності system.configuration
sclarson

Відповіді:


95

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

WebConfigurationManager створений спеціально для програм ASP.NET.

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

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

Я б запропонував поглянути на WebConfigurationManager і побачити, чи він надає вам все, що ви просто не можете зробити з ConfigurationManager, і використовувати його замість цього, інакше використання ConfigurationManager полегшить безперебійне використання вашого коду між веб-і настільними аплікаціями.


4

Хоча WebConfigurationManager розташований у збірці System.Web, ConnectionStringSettingsCollection, який він повертає, знаходиться в System.Configuration.

Якщо ви отримуєте помилку

Неможливо застосувати індексування за допомогою [] до виразу типу "System.Configuration.ConnectionStringSettingsCollection"

намагаючись отримати доступ до індексу масиву ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

переконайтеся, що у вас є посилання на збірку System.Configuration


3

Не впевнений, що ви маєте на увазі щодо рядків з'єднання.

Виклик WebConfigurationManager.ConnectionStrings повертає System.Configuration.ConnectionStringSettingsCollection, який такий же, як ви отримали, якби ви назвали ConfigurationManager.ConnectionStrings .

В іншому випадку, як каже XOR, він розроблений для обробки декількох ієрархічних web.configs, комбінуючи їх у міру необхідності під час переміщення папок у програмі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.