Несколько файлов 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?
Ответы
Ответ 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"];