53

我想创建 3 个 AppSettings 配置文件:

  • 数据库.config
  • 消息配置
  • 全局配置

在添加我的 App.config 之后:

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

但是,当我尝试使用 访问三个文件之一中的密钥时,出现ConfigurationManager以下错误:

配置系统初始化失败。每个配置文件中的部分只能出现一次。

我不能拥有多个 AppSettings 配置文件?

4

2 回答 2

57

您不能拥有多个 appsettings,因为这是一个部分的名称。您可以添加一个新的部分,尽管它使用与 appsettings 相同的部分定义。例如,

<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>
于 2012-07-05T19:25:17.283 回答
45

单独文件的代码:

网络配置:

<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">
</MessageConfig>

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

数据库配置:

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

ETC...

可以通过如下代码访问:

var databaseConfiguration = (NameValueCollection)ConfigurationManager.GetSection("DatabaseConfig");
string name = databaseConfiguration["Name"];
于 2016-10-21T07:09:45.133 回答