อ่านตัวแปรจากเว็บ Config


คำตอบ:


72

ฉันขอแนะนำให้คุณอย่าแก้ไข web.config จากของคุณเพราะทุกครั้งเมื่อมีการเปลี่ยนแปลงแอปพลิเคชันของคุณจะรีสตาร์ท

อย่างไรก็ตามคุณสามารถอ่าน web.config โดยใช้ไฟล์ System.Configuration.ConfigurationManager.AppSettings


ขอบคุณ Mr. Muhammed ดังนั้นสิ่งที่คุณแนะนำให้ฉันทำเพื่อบันทึกตัวแปรในที่สาธารณะที่สามารถเปลี่ยนแปลงได้โดยไม่ต้องเปิดเว็บแอปพลิเคชันใหม่ ขอบคุณล่วงหน้า
Amira Elsayed Ismail

1
คุณสามารถจัดเก็บตัวแปรดังกล่าวในไฟล์ XML ที่เข้ารหัส
vamyip

1
ใช่ไฟล์ XML เป็นความคิดที่ดีกว่า หรือคุณสามารถเก็บไว้ใน DB และเพิ่มใน application_start (Global.asax) ใส่ไว้ในตัวแปรของแอปพลิเคชันและใช้สิ่งเหล่านี้ในแอปพลิเคชัน ตัวแปรเหล่านี้กำหนดเพียงครั้งเดียวในแอปพลิเคชันและหากแอปพลิเคชันของคุณรีสตาร์ทตัวแปรเหล่านี้จะกำหนดอีกครั้ง
Muhammad Akhtar

ขอบคุณมากคุณ Vamyip และ Mr. Muhammed สำหรับความช่วยเหลือของคุณ
Amira Elsayed Ismail

147

รับ web.config ต่อไปนี้:

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

ตัวอย่างการใช้งาน:

using System.Configuration;

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

17
+1 คำตอบที่ดี อย่างไรก็ตามหมายเหตุหนึ่ง - คุณไม่จำเป็นต้องเรียกToStringอย่างชัดเจนในฐานะผู้จัดทำดัชนีเกี่ยวกับAppSettingsมูลค่าการส่งคืนของประเภทstringตัวเอง
Horgh

16

หากคุณต้องการข้อมูลพื้นฐานคุณสามารถเข้าถึงคีย์ผ่าน:

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

ในการเข้าถึงคีย์การกำหนดค่าเว็บของฉันฉันจะสร้างคลาสแบบคงที่ในแอปพลิเคชันของฉันเสมอ หมายความว่าฉันสามารถเข้าถึงได้ทุกที่ที่ฉันต้องการและฉันไม่ได้ใช้สตริงทั่วแอปพลิเคชันของฉัน (หากมีการเปลี่ยนแปลงในการกำหนดค่าเว็บฉันจะต้องดำเนินการตามเหตุการณ์ทั้งหมดที่เปลี่ยนแปลง) นี่คือตัวอย่าง:

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

สมมติว่ามีคีย์อยู่ภายใน<appSettings>โหนด:

ConfigurationSettings.AppSettings["theKey"];

สำหรับ "การเขียน" - เพียงแค่อย่า

web.config ไม่ได้ออกแบบมาสำหรับสิ่งนั้นหากคุณกำลังจะเปลี่ยนค่าอยู่ตลอดเวลาให้ใส่ไว้ในคลาสผู้ช่วยแบบคงที่



0

ฉันเป็นคลาส siteConfiguration สำหรับการเรียก appSetting ทั้งหมดของฉันด้วยวิธีนี้ ฉันแบ่งปันถ้ามันจะช่วยใคร

เพิ่มรหัสต่อไปนี้ที่ "web.config"

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

ตอนนี้คุณสามารถกำหนดคลาสเพื่อรับค่า appSetting ทั้งหมดของคุณ แบบนี้

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

ตอนนี้เพิ่มการอ้างอิงของคลาสก่อนหน้าและเพื่อเข้าถึงการโทรที่สำคัญเช่นร้อง

string appKeyStringVal= SiteConfigurationReader.appKeyString;
int appKeyIntVal= SiteConfigurationReader.appKeyInt;
int appKeyStringByPassingKey = SiteConfigurationReader.GetAppSettingsInteger("appKeyInt");
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.