example - configurationmanager.connectionstrings c#
AppSettings obtiene valor del archivo.config (12)
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 :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- ... -->
<add key="ClientsFilePath" value="filepath"/>
<!-- ... -->
</appSettings>
</configuration>
¿Tienes alguna sugerencia qué debería hacer?
Algunas de las respuestas parecen un poco fuera de IMO Aquí está mi toma alrededor del año 2016
<add key="ClientsFilePath" value="filepath"/>
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 : [email protected];[email protected];
Dale una oportunidad:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
En el archivo .config de la aplicación / web configure la siguiente configuración:
<configuration>
<appSettings>
<add key="NameForTheKey" value="ValueForThisKey" />
...
...
</appSettings>
...
...
</configuration>
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
Esto funciona para mí:
string value = System.Configuration.ConfigurationManager.AppSettings[key];
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
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 .
Aquí hay un ejemplo de mi App.config :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="AdminName" value="My Name"/>
<add key="AdminEMail" value="MyEMailAddress"/>
</appSettings>
</configuration>
Que puedes obtener de la siguiente manera:
string adminName = ConfigurationManager.AppSettings["AdminName"];
Leer desde la configuración:
Deberá agregar una referencia a Config
- Abra "Propiedades" en su proyecto
- Ir a la pestaña "Configuración"
- Agregar "Nombre" y "Valor"
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();
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.
Mira, hice lo que pensé que era lo más obvio:
string filePath = ConfigurationManager.AppSettings.GetValues("ClientsFilePath").ToString();
Mientras compila, siempre devuelve nulo.
Sin embargo, esto (desde arriba) funciona:
string filePath = ConfigurationManager.AppSettings["ClientsFilePath"];
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();
}
Simplemente puede escribir:
string filePath = Sysem.Configuration.ConfigurationManager.AppSettings[key.ToString()];
porque la key
es un objeto y AppSettings
toma una cadena
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)