Значения AppSettings не собраны в web.config в подкаталоге - PullRequest
0 голосов
/ 14 октября 2011

У нас есть набор служб WCF, размещенных в IIS.В нашей архитектуре у нас есть разные экземпляры службы, которые различаются по конфигурации, размещенной в подкаталогах под корнем.

У меня есть Web.Config в корне, который имеет некоторую информацию о конфигурации в разделе AppSettings.В частности, это выглядит так:

  <appSettings>
        <add key="Environment" value="Local" /> 
  </appSettings>

В разных подкаталогах я добавляю еще один Web.config, который добавляет другие параметры, относящиеся к службам в этом подкаталоге.

<appSettings>
      <add key="Subdir" value="ABC" />
</appSettings>

Однако когда я вызываю файл службы (.svc) в подкаталоге, в коллекции ConfigurationManager.AppSettings («Среда») есть только одно значение.Ключ "Subdir" нигде не найден.(Кстати, код написан с использованием ConfigurationManager, но я также пытался использовать WebConfigurationManager, и результат тот же.)

В документации по MSDN ясно сказано, что файлы Web.config во вложенных каталогах допускаютсябыть накопительным.Так почему же мой ключ "Subdir" не отображается в этой коллекции?

Заранее благодарен за любую помощь, которую вы можете мне оказать.

1 Ответ

1 голос
/ 14 октября 2011

Для блага любого, кто столкнулся с этим, я нашел ответ.

Несмотря на то, что это приложение работает под управлением IIS и доступ к нему осуществляется через IIS, точка, где требуется этот элемент конфигурации, находится глубоко в производном классе System.ServiceModel.ServiceHostFactory. В этот момент HttpContext.Current имеет значение null, поэтому ConfigurationManager не имеет доступа к информации о структуре веб-каталогов и должен просто зависеть от конфигурации приложения, которая находится на верхнем уровне.

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

...