Несколько источников конфигурации для Enterprise Library 4.1? - PullRequest
2 голосов
/ 01 июня 2010

Мы используем блоки приложения для кэширования и журналирования из entlib 4.1. Мы хотим сохранить конфигурацию этих двух в отдельных файлах. Как мы можем этого добиться?

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

Я попробовал следующее:

<?xml version="1.0" encoding="utf-8" ?>    
<configuration> 
  <configSections>    
    <section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9057346a2b2dcfc8" />

  </configSections>

  <enterpriseLibrary.ConfigurationSource selectedSource="messagesCache">    
    <sources>    
      <add name="messagesCache" filePath="Configuration\\messagesCache.config"  type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9057346a2b2dcfc8" />    
      <add name="logging" filePath="Configuration\\logging.config"  type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9057346a2b2dcfc8" />    
    </sources>

  </enterpriseLibrary.ConfigurationSource>    
</configuration>

Но это не работает, потому что блоки приложения всегда используют значение атрибута selectedSource.

1 Ответ

3 голосов
/ 01 июня 2010

Как отмечено в Внешние файлы конфигурации в Enterprise Library для .NET Framework 2.0 :

[...] пока вы можете настроить как можно больше Источники конфигурации, как вы хотите используя инструмент, только один «выбран» быть тем, который Enterprise Library будет автоматически использовать [...]

Я использовал атрибут configSource:

<configuration>
  <configSections>
    <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <section name="validationConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Validation.Configuration.ValidationSettings, Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </configSections>

  <loggingConfiguration configSource="logging.config"/>
  <exceptionHandlingConfiguration configSource="exceptionHandling.config"/>
  <dataConfiguration configSource="dataAccess.config"/>
  <validationConfiguration configSource="validation.config"/>
</configuration>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...