AppSettings obtiene valor del archivo .config

No puedo acceder a los valores en el archivo de configuración.

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var clientsFilePath = config.AppSettings.Settings["ClientsFilePath"].Value; // the second line gets a NullReferenceException 

archivo .config :

         

¿Tienes alguna sugerencia qué debería hacer?

Esto funciona para mí:

 string value = System.Configuration.ConfigurationManager.AppSettings[key]; 

La respuesta que dio dtsg funciona:

 string filePath = ConfigurationManager.AppSettings["ClientsFilePath"]; 

PERO, debe agregar una referencia de ensamblaje a

Configuración del sistema

Vaya a su Solution Explorer y haga clic derecho en Referencias y seleccione Agregar referencia . Seleccione la pestaña Ensamblajes y busque Configuración .

Gerente de referencia

Aquí hay un ejemplo de mi App.config :

           

Que puedes obtener de la siguiente manera:

 string adminName = ConfigurationManager.AppSettings["AdminName"]; 

Dale una oportunidad:

 string filePath = ConfigurationManager.AppSettings["ClientsFilePath"]; 

Leer desde la configuración:

Deberá agregar una referencia a Config

  1. Abra “Propiedades” en su proyecto
  2. Ir a la pestaña “Configuración”
  3. Agregar “Nombre” y “Valor”
  4. Obtenga valor con el uso del siguiente código:
 string value = Properties.Settings.Default.keyname; 

Guardar en Config:

 Properties.Settings.Default.keyName = value; Properties.Settings.Default.Save(); 

Estoy usando:

  ExeConfigurationFileMap configMap = new ExeConfigurationFileMap(); //configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension"; configMap.ExeConfigFilename = AppDomain.CurrentDomain.BaseDirectory + ServiceConstants.FILE_SETTING; Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None); value1 = System.Configuration.ConfigurationManager.AppSettings["NewKey0"]; value2 = config.AppSettings.Settings["NewKey0"].Value; value3 = ConfigurationManager.AppSettings["NewKey0"]; 

Donde value1 = … y value3 = … da null y value2 = … funciona

Luego, decidí reemplazar la aplicación interna.config con:

 // Note works in service but not in wpf AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"d:\test\justAConfigFile.config.whateverYouLikeExtension"); ConfigurationManager.RefreshSection("appSettings"); string value = ConfigurationManager.AppSettings["NewKey0"]; 

Usando VS2012 .net 4

Algunas de las respuestas parecen un poco fuera de IMO Aquí está mi toma alrededor del año 2016

  

Asegúrese de que se hace referencia a System.Configuration .

La pregunta es preguntar por el valor de una tecla de aplicación

Lo cual ciertamente DEBE ser

  string yourKeyValue = ConfigurationManager.AppSettings["ClientsFilePath"] //yourKeyValue should hold on the HEAP "filepath" 

Aquí hay un giro en el que puede agrupar valores (no para esta pregunta)

 var emails = ConfigurationManager.AppSettings[ConfigurationManager.AppSettings["Environment"] + "_Emails"]; 

emails serán el valor de la Clave del Entorno + “_Emails”

 example : jack@google.com;thad@google.com; 

Para la aplicación web, normalmente escribiré este método y solo lo llamaré con la clave.

 private String GetConfigValue(String key) { return System.Web.Configuration.WebConfigurationManager.AppSettings[key].ToString(); } 

En el archivo .config de la aplicación / web configure la siguiente configuración:

    ... ...  ... ...  

entonces puedes acceder a esto en tu código al poner en esta línea:

 string myVar = System.Configuration.ConfigurationManager.AppSettings["NameForTheKey"]; 

* Tenga en cuenta que esto funciona bien para .net4.5.x y .net4.6.x; pero no funcionan para .net core. Saludos cordiales: Rafael

Mira, hice lo que pensé que era lo más obvio:

 string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString(); 

Mientras comstack, siempre devuelve nulo.

Sin embargo, esto (desde arriba) funciona:

 string filePath = ConfigurationManager.AppSettings["ClientsFilePath"]; 

Volviendo a este después de un largo tiempo …

Dado el fallecimiento de ConfigurationManager, para cualquiera que todavía esté buscando una respuesta a esta prueba (por ejemplo):

 AppSettingsReader appsettingsreader = new AppSettingsReader(); string timeAsString = (string)(new AppSettingsReader().GetValue("Service.Instance.Trigger.Time", typeof(string))); 

Requiere System.Configuration por supuesto.

(Editó el código en algo que realmente funciona y es más fácil de leer)

Mi prueba simple también falló, siguiendo el consejo de las otras respuestas aquí, hasta que me di cuenta de que el archivo de configuración que agregué a mi aplicación de escritorio recibió el nombre “App1.config”. Cambié el nombre a “App.config” y todo funcionó de inmediato como debería.

Simplemente puede escribir:

 string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()]; 

porque la key es un objeto y AppSettings toma una cadena