从Web.Config读取变量


Answers:


71

我建议您不要从中修改web.config,因为每次更改时,它将重新启动您的应用程序。

但是,您可以使用以下内容阅读web.config System.Configuration.ConfigurationManager.AppSettings


谢谢您,穆罕默德先生,那么您建议我做些什么来将变量保存在公共场所,而无需重新发布Web应用程序即可进行更改?在此先感谢
Amira Elsayed Ismail 2010年

1
您可以将此类变量存储在加密的XML文件中。
vamyip

1
是的,XML文件是更好的主意。或者,您可以将其存储在DB中并添加到application_start(Global.asax)中,将其放入应用程序变量中,然后在应用程序中使用它们。这些变量仅在应用程序中分配一次,如果您的应用程序重新启动,这些变量将再次分配。
Muhammad Akhtar

非常感谢Vamyip先生和Muhammed先生的帮助
Amira Elsayed Ismail 2010年

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
horgh 2013年

16

如果需要基础知识,可以通过以下方式访问密钥:

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

要访问我的Web配置键,我总是在应用程序中创建一个静态类。这意味着我可以在任何需要的地方访问它们,而不必在整个应用程序中使用字符串(如果Web配置中的字符串发生更改,我将不得不经历所有更改它们的情况)。这是一个示例:

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");
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.