53

3 つの AppSettings 構成ファイルを作成したい:

  • データベース.config
  • Messages.config
  • Global.config

そして、私の App.config に追加した後:

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

しかし、3 つのファイルのいずれかにあるキーにアクセスしようとするとConfigurationManager、次のエラーが発生しました。

構成システムの初期化に失敗しました。セクションは、構成ファイルごとに 1 回だけ表示する必要があります。

複数の 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

別ファイルのコード:

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>

データベース.config:

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

等...

次のようなコードでアクセスできます。

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