Прочитайте змінну з Web.Config


Відповіді:


71

Я б запропонував вам не змінювати web.config з вашого, оскільки кожен раз, коли змінюється, він перезапускатиме вашу програму.

Однак ви можете прочитати web.config за допомогою System.Configuration.ConfigurationManager.AppSettings


Дякую, пане Мухаммеде, то що ви мені радите зробити, щоб зберегти змінну у громадському місці, яку можна змінити без перезавантаження веб-програми? Попередньо
дякую

1
Ви можете зберігати такі змінні у зашифрованому файлі XML.
vamyip

1
так, XML-файл - краща ідея. Або ви можете зберегти його в БД і додати в application_start (Global.asax), помістити у змінну програми та використовувати їх у програмі. ці змінні призначаються лише один раз у програмі, і якщо ваша програма перезапуститься, вони будуть призначені знову.
Мухаммед Ахтар,

Щиро дякуємо пану Ваміпу та пану Мухаммеду за допомогу
Amira Elsayed Ismail

143

Враховуючи наступний 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самі
Хорген

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");
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.