Đọc biến từ Web.Config


Câu trả lời:


71

Tôi khuyên bạn không nên sửa đổi web.config từ của bạn, bởi vì mỗi khi thay đổi, nó sẽ khởi động lại ứng dụng của bạn.

Tuy nhiên, bạn có thể đọc web.config bằng cách sử dụng System.Configuration.ConfigurationManager.AppSettings


Cảm ơn Mr.Muhammed, vậy bạn khuyên tôi nên làm gì để lưu một biến ở nơi công cộng có thể thay đổi mà không cần khôi phục lại ứng dụng web? Cảm ơn trước
Amira Elsayed Ismail

1
Bạn có thể lưu trữ các biến như vậy trong một tệp XML được mã hóa.
vamyip

1
có, tệp XML là ý tưởng tốt hơn. Hoặc bạn có thể lưu trữ nó trong DB và thêm vào application_start (Global.asax), đặt nó vào biến ứng dụng và sử dụng chúng trong ứng dụng. các biến này chỉ gán một lần trong ứng dụng và nếu ứng dụng của bạn khởi động lại, các biến này sẽ được gán lại.
Muhammad Akhtar

Thank you very much Mr.Vamyip và Mr.Muhammed giúp đỡ của bạn
Amira Elsayed Ismail

143

Cho web.config sau:

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

Ví dụ sử dụng:

using System.Configuration;

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

17
+1 câu trả lời hay. Tuy nhiên một lưu ý - bạn không cần phải gọi ToStringmột cách rõ ràng, như indexers trên AppSettingsgiá trị trả về kiểu stringbản thân
horgh

16

Nếu bạn muốn những điều cơ bản, bạn có thể truy cập các phím thông qua:

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

Để truy cập các khóa cấu hình web của tôi, tôi luôn tạo một lớp tĩnh trong ứng dụng của mình. Nó có nghĩa là tôi có thể truy cập chúng bất cứ nơi nào tôi yêu cầu và tôi không sử dụng các chuỗi trên ứng dụng của mình (nếu nó thay đổi trong cấu hình web, tôi sẽ phải thực hiện tất cả các lần thay đổi chúng). Đây là một mẫu:

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

Giả sử khóa được chứa bên trong <appSettings>nút:

ConfigurationSettings.AppSettings["theKey"];

Đối với "viết" - nói một cách đơn giản, không.

Web.config không được thiết kế cho điều đó, nếu bạn định thay đổi một giá trị liên tục, hãy đặt nó vào một lớp trợ giúp tĩnh.



0

Tôi là lớp siteConfiguration để gọi tất cả appSetting của tôi như thế này. Tôi chia sẻ nó nếu nó sẽ giúp đỡ bất cứ ai.

thêm mã sau tại "web.config"

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

Bây giờ bạn có thể xác định một lớp để nhận tất cả giá trị appSetting của mình. như thế này

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

Bây giờ, hãy thêm tham chiếu của lớp trước đó và để truy cập một lệnh gọi khóa như dưới đây

string appKeyStringVal= SiteConfigurationReader.appKeyString;
int appKeyIntVal= SiteConfigurationReader.appKeyInt;
int appKeyStringByPassingKey = SiteConfigurationReader.GetAppSettingsInteger("appKeyInt");
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.