Подтвердить что ты не робот

Несколько файлов AppSettings, возможно ли это?

Я хочу создать 3 конфигурационных файла AppSettings:

  • Database.config
  • Messages.config
  • Global.config

И после добавления в мой App.config:

<appSettings file="Database.config" />
<appSettings file="Messages.config" />
<appSettings file="Global.config" />

Но когда я пытаюсь получить ключ, который есть в одном из трех файлов с ConfigurationManager, я получил следующую ошибку:

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

У меня не может быть более одного конфигурационного файла AppSettings?

4b9b3361

Ответ 1

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

<configuration>
    <configSections>
        <section name="DatabaseConfig" type="System.Configuration.NameValueFileSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    </configSections>
    ....
    <DatabaseConfig>
       <add key="Whatever" value="stuff"/>
    </DatabaseConfig>
</configuration>

Ответ 2

Код для отдельного файла:

Web.config:

<configSections>
    <section name="DatabaseConfig" type="System.Configuration.NameValueFileSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <section name="MessageConfig" type="System.Configuration.NameValueFileSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <section name="GlobalConfig" type="System.Configuration.NameValueFileSectionHandler, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>

<DatabaseConfig configSource="database.config">
</DatabaseConfig>

<MessageConfig configSource="message.config">
</DatabaseConfig>

<GlobalConfig configSource="global.config">
</GlobalConfig>

database.config:

<DatabaseConfig>
  <add key="Name" value="ServerName" />
</DatabaseConfig>

и т.д...

Доступ к коду можно получить через следующий код:

var databaseConfiguration = (NameValueCollection)ConfigurationManager.GetSection("DatabaseConfig");
string name = databaseConfiguration["Name"];