Как читать app.config из произвольного места, то есть из базы данных в .NET

Я пытаюсь переопределить метод ApplyConfiguration в моем настраиваемом ServiceHost для чтения конфигурации из базы данных вместо app.config. В идеале я бы хотел сделать что-то вроде этого:

Конфигурация конфигурации = GetConfigFromMyDatabase (...);

ServiceModelSectionGroup serviceModel = ServiceModelSectionGroup.GetSectionGroup (config);

Есть ли способ сделать это, не записывая временный файл app.config?


person ingt    schedule 21.04.2009    source источник


Ответы (3)


А как насчет использования:

System.Configuration.ConfigurationManager.OpenExeConfiguration(string exePath)

Это должно позволить вам открыть произвольный файл app.config.

person Armbrat    schedule 21.04.2009

Вам не нужен отдельный AppDomain, если вы пишете собственный ServiceHost.

ServiceHost имеет метод ApplyConfiguration, который можно переопределить. Вы можете загрузить конфиг откуда угодно.

См. здесь соответствующую статью с описанием этого метода.

person Cheeso    schedule 12.05.2009

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

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

Конечно, конфигурация в базе данных должна быть либо полным файлом app.config, либо вам придется объединить его с каким-то файлом конфигурации шаблона, в котором были любые другие биты конфигурации, не относящиеся к serviceModel, для остальной части вашего приложение.

Реализовать его таким образом - довольно изящное решение, и оно хорошо работает (уже использовал его раньше).

person Mark Allanson    schedule 22.04.2009