2010-09-20 3 views
2

Есть ли способ перечислить все настройки, чтобы получить значения, загруженные менеджером конфигурации? Может быть, я здесь плотный, но я не могу найти способ перечислить параметры, которые содержатся в группе разделов.получить все настройки конфигурации, загружаемые менеджером конфигурации

У меня есть служба WCF, которая предназначена для того, чтобы вызывающая система могла передавать объекты запроса, которые определяют операцию, выполняемую на сервере. Служба загружает сборки динамически во время выполнения (например, модель подключаемого модуля) и определяет, какой объект может ответить на запрос. Я ищу способ, которым я могу отправить запрос «дать мне всю информацию о конфигурации», и служба может вернуть загруженную информацию. Меня интересует то, что было загружено в память, и используется в зависимости от того, какие значения указаны в фактическом файле конфигурации (конфигурацию можно заменить, не затрагивая ничего в памяти до перезапуска).

Есть событие SettingLoaded, которое я мог бы использовать, чтобы отслеживать их, но это кажется надуманным.

Любые идеи?

[UPDATE] Основная цель этого вопроса состоит в том, что мне нужен способ определить разницу между настройками, содержащимися в физическом файле .config сборки, в сравнении с параметром, который скомпилирован в сборку как часть «по умолчанию», конфигурации.

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

+0

Почему вы хотите это сделать? (Если мы знаем, какую проблему вы пытаетесь решить, мы можем помочь вам.) – Richard

+0

отредактировал, спасибо! –

ответ

0

Возможно, решение здесь - это изменение процесса/процедуры, так что все конфигурационные параметры должны быть явно предоставлены через файл конфигурации. Этого можно добиться, всегда предоставляя значение разрыва или «известное-плохое» для значения по умолчанию любого параметра. Это гарантирует, что допустимые значения должны быть предоставлены конфигурационным файлом. Такой подход позволил бы сравнивать значения с использованием файла конфигурации в качестве источника сравнения.

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

1

Возможно, я не понимаю ваш вопрос, но для меня единственными параметрами, которые гарантированно являются пары ключ/значение, являются AppSettings, которые вы можете получить через свойство ConfigurationManager.AppSettings.

+0

Достаточно честный, и вы правы - это довольно просто. Я больше думаю о настройках, которые хранятся в группе applicationSettings. Внутри группы я могу получить разделы (для каждой сборки), но я не вижу способа получить значения, которые загружаются в память. Известно, что они имеют формат , но, конечно, загруженный тип неизвестен. –

0

Похоже, вы в основном хотите иметь систему регистрации плагинов. Это также звучит так, будто вы пытаетесь различить то, что находится в памяти, и то, что загружено, потому что вы хотите определить, когда регистрация изменилась без перезапуска?

Если это правда, одним из вариантов является создание собственного регистрационного xml-файла и использование класса FileWatcher для получения события, когда файл был изменен, и вы можете перезагрузить регистрационную информацию.

+0

Эти сборки загружаются один раз при запуске службы, поэтому меня не интересуют изменения, которые происходят во время выполнения.Я отредактировал вопрос для большей ясности. –

Смежные вопросы