Değişkeni Web.Config'den okuyun


Yanıtlar:


71

Web.config dosyasını kendi başınıza değiştirmemenizi öneririm çünkü her değişiklik yaptığınızda, uygulamanızı yeniden başlatacaktır.

Ancak web.config dosyasını kullanarak System.Configuration.ConfigurationManager.AppSettings


Teşekkürler Bay Muhammed, peki bir değişkeni web uygulamasını yeniden düzenlemeden değiştirilebilecek halka açık bir yere kaydetmek için bana ne yapmamı tavsiye edersiniz?
Şimdiden

1
Bu tür değişkenleri şifreli bir XML dosyasında saklayabilirsiniz.
vamyip

1
evet, XML dosyası daha iyi bir fikirdir. Veya DB'de saklayabilir ve application_start (Global.asax) ekleyebilir, uygulama değişkenine koyabilir ve bunları uygulamada kullanabilirsiniz. bu değişken uygulamada yalnızca bir kez atanır ve uygulamanız yeniden başlatılırsa bunlar yeniden atanır.
Muhammad Akhtar

Yardımlarınız için çok teşekkür ederim Bay Vamyip ve Bay Muhammed
Amira Elsayed Ismail

145

Aşağıdaki web.config verildiğinde:

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

Örnek kullanım:

using System.Configuration;

string clientId = ConfigurationManager.AppSettings["ClientId"];
string redirectUrl = ConfigurationManager.AppSettings["RedirectUrl"];

17
+1 güzel cevap. Ancak bir not - ToStringindeksleyiciler olarak kendilerinin AppSettingsdönüş değeri üzerine açıkça çağırmanıza gerek yokstring
horgh

16

Temel bilgileri istiyorsanız, tuşlara şu yolla erişebilirsiniz:

string myKey = System.Configuration.ConfigurationManager.AppSettings["myKey"].ToString();
string imageFolder = System.Configuration.ConfigurationManager.AppSettings["imageFolder"].ToString();

Web yapılandırma anahtarlarıma erişmek için uygulamamda her zaman statik bir sınıf oluştururum. Bu, onlara ihtiyacım olan her yerde erişebileceğim ve dizeleri uygulamamın her yerinde kullanmadığım anlamına gelir (web yapılandırmasında değişirse, bunları değiştiren tüm olaylardan geçmek zorunda kalırım). İşte bir örnek:

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; }
    }
}

7

Anahtarın <appSettings>düğüm içinde bulunduğunu varsayarsak :

ConfigurationSettings.AppSettings["theKey"];

"Yazma" konusuna gelince - basitçe söylemek gerekirse, yapma .

Web.config bunun için tasarlanmamıştır, eğer bir değeri sürekli değiştirecekseniz, onu statik bir yardımcı sınıfa koyun.



0

Tüm appSetting'imi bu şekilde çağırmak için siteConfiguration sınıfıyım. Birine yardımı olacaksa paylaşırım.

"web.config" de aşağıdaki kodu ekleyin

<configuration>
   <configSections>
     <!-- some stuff omitted here -->
   </configSections>
   <appSettings>
      <add key="appKeyString" value="abc" />
      <add key="appKeyInt" value="123" />  
   </appSettings>
</configuration>

Artık tüm appSetting değerinizi almak için bir sınıf tanımlayabilirsiniz. bunun gibi

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;
        }
      }
   }
}

Şimdi önceki sınıfın referansını ekleyin ve aşağıdaki gibi önemli bir çağrıya erişin

string appKeyStringVal= SiteConfigurationReader.appKeyString;
int appKeyIntVal= SiteConfigurationReader.appKeyInt;
int appKeyStringByPassingKey = SiteConfigurationReader.GetAppSettingsInteger("appKeyInt");
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.