example connectionstrings configurationsettings app c# .net appsettings

connectionstrings - configurationsettings.appsettings c#



ConfiguraciĆ³n de lectura desde app.config o web.config en.net (20)

Actualización para el framework 4.5 y 4.6; Lo siguiente ya no funcionará:

string keyvalue=System.Configuration.ConfigurationManager.AppSettings["keyname"];

Ahora accede a la clase de Configuración a través de Propiedades:

string keyvalue= Properties.Settings.Default.keyname;

Consulte Administración de la configuración de la aplicación para obtener más información.

Estoy trabajando en una biblioteca de clase C # que debe poder leer la configuración del web.config o app.config (dependiendo de si se hace referencia a la DLL desde una aplicación web ASP.NET o una aplicación de Windows Forms).

He encontrado que

ConfigurationSettings.AppSettings.Get("MySetting")

Funciona, pero ese código ha sido marcado como obsoleto por Microsoft.

He leído que debería estar usando:

ConfigurationManager.AppSettings["MySetting"]

Sin embargo, la clase System.Configuration.ConfigurationManager no parece estar disponible en un proyecto de biblioteca de clases de C #.

¿Alguien sabe cuál es la mejor manera de hacer esto?


Además, puedes usar formo :

Config:

<appSettings> <add key="RetryAttempts" value="5" /> <add key="ApplicationBuildDate" value="11/4/1999 6:23 AM" /> </appSettings>

Código:

dynamic config = new Configuration(); var retryAttempts1 = config.RetryAttempts; // returns 5 as a string var retryAttempts2 = config.RetryAttempts(10); // returns 5 if found in config, else 10 var retryAttempts3 = config.RetryAttempts(userInput, 10); // returns 5 if it exists in config, else userInput if not null, else 10 var appBuildDate = config.ApplicationBuildDate<DateTime>();


Como encontré el mejor enfoque para acceder a las variables de configuración de la aplicación de forma sistemática, forme una clase de envoltura sobre System.Configuration como se muestra a continuación

public class BaseConfiguration { protected static object GetAppSetting(Type expectedType, string key) { string value = ConfigurationManager.AppSettings.Get(key); try { if (expectedType == typeof(int)) return int.Parse(value); if (expectedType == typeof(string)) return value; throw new Exception("Type not supported."); } catch (Exception ex) { throw new Exception(string.Format("Config key:{0} was expected to be of type {1} but was not.", key, expectedType), ex); } } }

Ahora podemos acceder a las variables de configuración necesarias mediante nombres codificados utilizando otra clase como se muestra a continuación

public class ConfigurationSettings:BaseConfiguration { #region App setting public static string ApplicationName { get { return (string)GetAppSetting(typeof(string), "ApplicationName"); } } public static string MailBccAddress { get { return (string)GetAppSetting(typeof(string), "MailBccAddress"); } } public static string DefaultConnection { get { return (string)GetAppSetting(typeof(string), "DefaultConnection"); } } #endregion App setting #region global setting #endregion global setting }


Debe agregar al proyecto una referencia al conjunto System.Configuration.


Deberá agregar una referencia a System.Configuration en la carpeta de referencias de su proyecto.

Definitivamente, debería estar utilizando el ConfigurationManager sobre los ConfigurationSettings obsoletos.


Es posible que esté agregando el archivo App.config a una DLL. App.Config funciona solo para proyectos ejecutables, ya que todos los dll toman la configuración del archivo de configuración para el archivo ejecutable.

Digamos que tienes dos proyectos en tu solución:

  • AlgunosDll
  • Algunos exe

Su problema podría estar relacionado con el hecho de que está incluyendo app.config a SomeDLL y no a SomeExe. SomeDll puede leer la configuración del proyecto SomeExe.


Estoy usando esto y me funciona bien

textBox1.Text = ConfigurationManager.AppSettings["Name"];


Haga clic con el botón derecho en la biblioteca de su clase y elija la opción "Agregar referencias" en el Menú; y finalmente desde la pestaña .NET, seleccione Configuración de Sistema. Esto incluiría dll System.Configuration en su proyecto.


He estado tratando de encontrar una solución para este mismo problema durante un par de días. Pude resolver esto agregando una clave dentro de la etiqueta appsettings en web.config. Esto debería anular el .dll al usar el ayudante.

<configuration> <appSettings> <add key="loginUrl" value="~/RedirectValue.cshtml" /> <add key="autoFormsAuthentication" value="false"/> </appSettings> </configuration>


Leer de Config:

Necesitarás agregar una referencia a Config.

  1. Abra "Propiedades" en su proyecto
  2. Ir a la pestaña "Configuración"
  3. Añadir "Nombre" y "Valor"
  4. Obtener valor con el uso de código siguiente:

    string value = Properties.Settings.Default.keyname;

Guardar en Config:

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


Otra posible solución:

var MyReader = new System.Configuration.AppSettingsReader(); string keyvalue = MyReader.GetValue("keyalue",typeof(string)).ToString();


Para muestra App.config como abajo:

<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="countoffiles" value="7" /> <add key="logfilelocation" value="abc.txt" /> </appSettings> </configuration>

Lee la configuración de la aplicación anterior utilizando el código que se muestra a continuación:

using System.Configuration;

Es posible que también deba agregar una referencia a System.Configuration en su proyecto si aún no existe. A continuación, puede acceder a los valores de esta manera:

string configvalue1 = ConfigurationManager.AppSettings["countoffiles"]; string configvalue2 = ConfigurationManager.AppSettings["logfilelocation"];

¡Espero que esto ayude!


Por favor, compruebe la versión .net que está trabajando. Debería ser superior a 4. Y debe agregar la biblioteca del sistema System.Configuration a su aplicación


Prueba esto:

string keyvalue=System.Configuration.ConfigurationManager.AppSettings["keyname"];

En web.config debería ser la siguiente estructura:

<configuration> <appSettings> <add key="keyname" value="keyvalue" /> </appSettings> </configuration>


Siempre creo una interfaz IConfig con propiedades de tipos seguros declaradas para todos los valores de configuración. Una clase de implementación Config envuelve las llamadas a System.Configuration. Todas sus llamadas de Configuración del sistema ahora están en un lugar mucho más fácil y más limpio para mantener y rastrear qué campos se están utilizando y declarar sus valores predeterminados. Escribo un conjunto de métodos de ayuda privada para leer y analizar tipos de datos comunes.

Usando un marco de IoC, puede acceder a los campos de IConfig en cualquier lugar de su aplicación simplemente pasando la interfaz a un constructor de clases. También puede crear implementaciones simuladas de la interfaz IConfig en sus pruebas unitarias, de modo que ahora puede probar varios valores de configuración y combinaciones de valores sin necesidad de tocar su archivo App.config o Web.config.


Solo para completar, hay otra opción disponible solo para proyectos web:

System.Web.Configuration.WebConfigurationManager.AppSettings["MySetting"]

El beneficio de esto es que no requiere que se agregue una referencia adicional, por lo que puede ser preferible para algunas personas.


Te recomiendo que crees un Wrapper para esta llamada. Algo así como un ConfigurationReaderService y el uso de inyección de dependencia para obtener esta clase. De esta manera, podrá aislar estos archivos de configuración para realizar pruebas.

Entonces use el ConfigurationManager.AppSettings["something"]; Sugiere y devuelve este valor. Con este método puede crear algún tipo de retorno predeterminado si no hay una clave disponible en el archivo .config.


Tuve el mismo problema, solo léelos de esta manera:

System.Configuration.ConfigurationSettings.AppSettings["MySetting"]


por ej.

<applicationSettings> <MyApp.My.MySettings> <setting name="Printer" serializeAs="String"> <value>1234 </value> </setting> </MyApp.My.MySettings> </applicationSettings> Dim strPrinterName as string= My.settings.Printer


web.config se utiliza con aplicaciones web. web.config por defecto tiene varias configuraciones requeridas para la aplicación web. Puede tener un web.config para cada carpeta en su aplicación web.

app.config se utiliza para aplicaciones de Windows. Cuando compile la aplicación en vs.net, se cambiará automáticamente su nombre a <appname>.exe.config y este archivo se entregará junto con su aplicación.

Puede usar el mismo método para llamar a los valores de app settings la app settings desde ambos archivos de configuración:

System.Configuration.ConfigurationSettings.AppSettings["Key"]