remarks example cref c# .net configuration appsettings

example - remarks c#



Múltiples archivos AppSettings, ¿es posible? (2)

Código para archivo separado:

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>

etc ...

Se puede acceder a través de un código como este:

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

Quiero crear 3 archivos de configuración de AppSettings:

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

Y después de agregar en mi App.config:

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

Pero cuando intento acceder a una clave que hay en uno de los tres archivos con ConfigurationManager , recibí el siguiente error:

El sistema de configuración no se inicializó. Las secciones solo deben aparecer una vez por archivo de configuración.

No puedo tener más de un archivo de configuración de AppSettings?


No puede tener más de una aplicación porque ese es el nombre de una sección. Sin embargo, puede agregar una nueva sección que use el mismo tipo de definición de sección que las aplicaciones. P.ej,

<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>