多个AppSettings文件,有可能吗?

Vin*_*oni 42 .net c# configuration appsettings

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

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

在我的App.config中添加后:

<appSettings file="Database.config" />
<appSettings file="Messages.config" />
<appSettings file="Global.config" />
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问三个文件中的一个中的密钥时ConfigurationManager,我收到以下错误:

配置系统无法初始化.每个配置文件只能出现一次.

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

aqu*_*nas 48

您不能拥有多个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>
Run Code Online (Sandbox Code Playgroud)

  • NameValueCollection settings = (NameValueCollection) ConfigurationManager.GetSection("DatabaseConfig"); (13认同)

Ogg*_*las 36

单独文件的代码:

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

<GlobalConfig configSource="global.config">
</GlobalConfig>
Run Code Online (Sandbox Code Playgroud)

database.config:

<DatabaseConfig>
  <add key="Name" value="ServerName" />
</DatabaseConfig>
Run Code Online (Sandbox Code Playgroud)

等等...

可以通过以下代码访问:

var databaseConfiguration = (NameValueCollection)ConfigurationManager.GetSection("DatabaseConfig");
string name = databaseConfiguration["Name"];
Run Code Online (Sandbox Code Playgroud)