Leer variable de Web.Config

Respuestas:

71

Le sugiero que no modifique web.config de su, porque cada vez que cambie, reiniciará su aplicación.

Sin embargo, puede leer web.config usando System.Configuration.ConfigurationManager.AppSettings

Muhammad Akhtar
fuente
Gracias, señor Muhammed, entonces, ¿qué me aconseja hacer para guardar una variable en un lugar público que se pueda cambiar sin volver a configurar la aplicación web? Gracias de antemano
Amira Elsayed Ismail
1
Puede almacenar dichas variables en un archivo XML cifrado.
vamyip
1
sí, el archivo XML es la mejor idea. O puede almacenarlo en la base de datos y agregar application_start (Global.asax), ponerlo en la variable de aplicación y usarlos en la aplicación. estas variables se asignan solo una vez en la aplicación y si su aplicación se reinicia, estas se asignarán nuevamente.
Muhammad Akhtar
Muchas gracias Sr.Vamyip y Sr.Muhammed por su ayuda
Amira Elsayed Ismail
143

Dado el siguiente web.config:

<appSettings>
     <add key="ClientId" value="127605460617602"/>
     <add key="RedirectUrl" value="http://localhost:49548/Redirect.aspx"/>
</appSettings>

Uso de ejemplo:

using System.Configuration;

string clientId = ConfigurationManager.AppSettings["ClientId"];
string redirectUrl = ConfigurationManager.AppSettings["RedirectUrl"];
PrateekSaluja
fuente
17
+1 buena respuesta. Sin embargo, una nota: no es necesario llamar ToStringexplícitamente, ya que los indexadores en el AppSettingsvalor de retorno del tipo stringellos mismos
horgh
16

Si desea lo básico, 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 lo necesite y no estoy usando las cadenas en toda mi aplicación (si cambia en la configuración web, tendría que revisar todas las ocurrencias cambiándolas). He aquí 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; }
    }
}
Lloyd Powell
fuente
7

Suponiendo que la clave está contenida dentro del <appSettings>nodo:

ConfigurationSettings.AppSettings["theKey"];

En cuanto a "escribir", en pocas palabras, no lo hagas.

El web.config no está diseñado para eso, si va a cambiar un valor constantemente, colóquelo en una clase auxiliar estática.

RPM1984
fuente
0

Soy la clase siteConfiguration para llamar a todo mi appSetting de esta manera. Lo comparto si ayuda a alguien.

agregue el siguiente código en el "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 appSetting. 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 acceda a una llamada clave como abajo

string appKeyStringVal= SiteConfigurationReader.appKeyString;
int appKeyIntVal= SiteConfigurationReader.appKeyInt;
int appKeyStringByPassingKey = SiteConfigurationReader.GetAppSettingsInteger("appKeyInt");
reza.cse08
fuente