Совместное использование конфигураций wcf между приложениями - как получить / установить значения программно? - PullRequest
0 голосов
/ 12 февраля 2012

Вот ситуация: я хочу иметь возможность запускать мою (.net 3.5) службу WCF в двух режимах:

  1. как обычный файл .exe и
  2. в качестве службы Windows.

не большая проблема.

Я создаю 2 проекта: одно консольное приложение и одну службу Windows.

Теперь я не хочу дублировать конфигурацию WCF дважды (для каждого проекта), поэтому я поместил ее в отдельные XML-файлы (которые могут совместно использоваться обоими приложениями).

Теперь каждый из файлов app.config выглядит следующим образом:

  <system.serviceModel>
    <bindings configSource="Config\ServiceModel.Bindings.xml" />
    <services configSource="Config\ServiceModel.Services.xml" />
    <behaviors configSource="Config\ServiceModel.Behaviors.xml" />
  </system.serviceModel>

Пока все хорошо - сервис отлично работает как консоль, так и сервис.

Проблема начинается, когда я пытаюсь манипулировать значениями в разделе services:

string exePath = string.Format("{0}MyService.exe", targetDir);
var config = ConfigurationManager.OpenExeConfiguration(exePath);
var serviceModelSectionGroup = config.GetSectionGroup("system.serviceModel");
var servicesSection = (ServicesSection) serviceModelSectionGroup.Sections["services"];
var services = servicesSection.Services;

Но services - это пустая коллекция!

Полагаю, мне здесь чего-то не хватает, но что? Должен ли я также вызывать OpenExeConfiguration для каждого из моих XML-файлов?

...