c# - net - Leer variable desde Web.Config
habilitar errores web config (6)
¿Cómo puedo agregar y leer el valor del archivo web.config ?
Dado el siguiente web.config:
<appSettings>
<add key="ClientId" value="127605460617602"/>
<add key="RedirectUrl" value="http://localhost:49548/Redirect.aspx"/>
</appSettings>
Ejemplo de uso:
using System.Configuration;
string clientId = ConfigurationManager.AppSettings["ClientId"];
string redirectUrl = ConfigurationManager.AppSettings["RedirectUrl"];
Le sugiero que no modifique web.config, ya que cada vez que cambie, reiniciará su aplicación.
Sin embargo, puede leer web.config usando System.Configuration.ConfigurationManager.AppSettings
Ryan Farley tiene una excelente publicación sobre esto en su blog, que incluye todas las razones por las que no se puede volver a escribir en los archivos web.config: escribir en el archivo de configuración de la aplicación .NET
Si desea los conceptos básicos, puede acceder a las claves a través de:
string myKey = System.Configuration.ConfigurationManager.AppSettings["myKey"].ToString();
string imageFolder = System.Configuration.ConfigurationManager.AppSettings["imageFolder"].ToString();
Para acceder a mis claves de configuración web siempre hago una clase estática en mi aplicación. Significa que puedo acceder a ellos donde sea que lo requiera y no estoy usando las cadenas en toda mi aplicación (si cambia en la configuración web, tendría que pasar por todas las instancias para cambiarlas). Aquí hay una muestra:
using System.Configuration;
public static class AppSettingsGet
{
public static string myKey
{
get { return ConfigurationManager.AppSettings["myKey"].ToString(); }
}
public static string imageFolder
{
get { return ConfigurationManager.AppSettings["imageFolder"].ToString(); }
}
// I also get my connection string from here
public static string ConnectionString
{
get { return ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; }
}
}
Soy clase de configuración de sitio para llamar a todas mis aplicaciones de esta manera. Lo comparto si ayuda a alguien.
agregue el siguiente código en "web.config"
<configuration>
<configSections>
<!-- some stuff omitted here -->
</configSections>
<appSettings>
<add key="appKeyString" value="abc" />
<add key="appKeyInt" value="123" />
</appSettings>
</configuration>
Ahora puede definir una clase para obtener todo el valor de su aplicación. Me gusta esto
using System;
using System.Configuration;
namespace Configuration
{
public static class SiteConfigurationReader
{
public static String appKeyString //for string type value
{
get
{
return ConfigurationManager.AppSettings.Get("appKeyString");
}
}
public static Int32 appKeyInt //to get integer value
{
get
{
return ConfigurationManager.AppSettings.Get("appKeyInt").ToInteger(true);
}
}
// you can also get the app setting by passing the key
public static Int32 GetAppSettingsInteger(string keyName)
{
try
{
return Convert.ToInt32(ConfigurationManager.AppSettings.Get(keyName));
}
catch
{
return 0;
}
}
}
}
Ahora agregue la referencia de la clase anterior y para acceder a una llamada de tecla como abajo
string appKeyStringVal= SiteConfigurationReader.appKeyString;
int appKeyIntVal= SiteConfigurationReader.appKeyInt;
int appKeyStringByPassingKey = SiteConfigurationReader.GetAppSettingsInteger("appKeyInt");
Suponiendo que la clave está contenida dentro del nodo <appSettings>
:
ConfigurationSettings.AppSettings["theKey"];
En cuanto a "escribir", simplemente, no.
El web.config no está diseñado para eso, si va a cambiar constantemente un valor, póngalo en una clase auxiliar estática.