Baca Variabel dari Web.Config

Jawaban:

71

Saya menyarankan Anda untuk tidak mengubah web.config dari Anda, karena setiap kali berubah, itu akan merestart aplikasi Anda.

Bagaimanapun Anda dapat membaca web.config menggunakan System.Configuration.ConfigurationManager.AppSettings

Muhammad Akhtar
sumber
Terima Kasih Pak Muhammad, jadi apa saran Anda untuk saya lakukan untuk menyimpan variabel di tempat umum yang dapat diubah tanpa mengulang aplikasi web? Thanks in Advance
Amira Elsayed Ismail
1
Anda dapat menyimpan variabel tersebut dalam file XML terenkripsi.
vamyip
1
ya, file XML adalah ide yang lebih baik. Atau Anda dapat menyimpannya di DB dan menambahkan application_start (Global.asax), memasukkannya ke dalam variabel aplikasi dan menggunakannya di aplikasi. variabel ini ditetapkan hanya sekali dalam aplikasi dan jika aplikasi Anda dimulai ulang, ini akan ditetapkan lagi.
Muhammad Akhtar
Terima kasih banyak Pak Vamyip dan Pak Muhammad atas bantuan Anda
Amira Elsayed Ismail
145

Diberikan web.config berikut:

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

Contoh penggunaan:

using System.Configuration;

string clientId = ConfigurationManager.AppSettings["ClientId"];
string redirectUrl = ConfigurationManager.AppSettings["RedirectUrl"];
PrateekSaluja
sumber
17
+1 jawaban yang bagus. Namun satu catatan - Anda tidak perlu memanggil ToStringsecara eksplisit, karena pengindeks pada AppSettingsnilai pengembalian tipe itu stringsendiri
horgh
16

Jika Anda menginginkan dasar-dasarnya, Anda dapat mengakses kunci melalui:

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

Untuk mengakses kunci konfigurasi web saya, saya selalu membuat kelas statis dalam aplikasi saya. Itu berarti saya dapat mengaksesnya di mana pun saya membutuhkan dan saya tidak menggunakan string di seluruh aplikasi saya (jika itu berubah dalam konfigurasi web, saya harus melalui semua kejadian yang mengubahnya). Berikut contohnya:

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
sumber
7

Dengan asumsi kunci ada di dalam <appSettings>node:

ConfigurationSettings.AppSettings["theKey"];

Adapun "menulis" - sederhananya, jangan.

Web.config tidak dirancang untuk itu, jika Anda akan terus mengubah nilai, letakkan di kelas pembantu statis.

RPM 1984
sumber
0

Saya adalah kelas siteConfiguration untuk memanggil semua appSetting saya seperti ini. Saya membagikannya jika itu akan membantu siapa pun.

tambahkan kode berikut di "web.config"

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

Sekarang Anda dapat menentukan kelas untuk mendapatkan semua nilai appSetting Anda. seperti ini

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

Sekarang tambahkan referensi kelas sebelumnya dan untuk mengakses panggilan kunci seperti di bawah ini

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