Web.Configから変数を読み取る


回答:


71

変更するたびにアプリケーションが再起動するため、web.configを変更しないことをお勧めします。

ただし、web.configを使用して読み取ることができます System.Configuration.ConfigurationManager.AppSettings


ムハンマドさん、ありがとうございます。変数をパブリックアプリケーションに保存して、Webアプリケーションを再表示せずに変更できるようにするにはどうすればよいですか。事前の感謝
アミラエルセイドイスマイル

1
このような変数は、暗号化されたXMLファイルに格納できます。
vamyip

1
はい、XMLファイルの方が適しています。または、DBに保存してapplication_start(Global.asax)を追加し、アプリケーション変数に入れて、これらをアプリケーションで使用できます。これらの変数はアプリケーションで1回だけ割り当てられ、アプリケーションが再起動すると、これらは再度割り当てられます。
Muhammad Akhtar

ヴァミップさんとムハメッドさん、ありがとうございました
アミラエルセイドイスマイル

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つ。ただし、1つの注意点- 型自体の戻り値のToStringインデクサーとして明示的に呼び出す必要はありませんAppSettingsstring
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

私はこのようにすべてのappSettingを呼び出すためのsiteConfigurationクラスです。それが誰かを助けるなら私はそれを共有します。

「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.