2009-08-12 9 views
0

web.configファイルの他のセクションでappSettings定義のプロパティを使用する方法はありますか?他のWeb.configセクションのappSettings値の使用

複数のセクションに値(電子メールアドレスなど)を書き込む必要があり、変更が行われるたびにその都度更新するのは非常に面倒です。

答えて

2

String.Formatを使用してデータを構築し、適切な場所で設定ファイルに{0}を使用することができます。
基本的なゲッターがあると仮定すると、データは簡単に実装できるはずです。例えば

<add key="Mail" value="[email protected]"/> 
<add key="LinkFormat" value="[[Mail Us|mailto:{0}]]"/> 

そして、(データをチェックし、のtry/catchからストリップダウン):

public static string GetEmail() 
{ 
    return ConfigurationManager.AppSettings["Mail"]; 
} 

public static string GetEmailLinkformat() 
{ 
    string format = ConfigurationManager.AppSettings["LinkFormat"]; 
    string mail = GetEmail(); 
    return String.Format(format, mail); 
} 
+0

例を投稿してください。 –

+0

私はすでにそれについて取り組んでいた... – Kobi

+0

ああ、ありがとうコビー、壮大な例! :-)とにかく、私は余分なコーディングを必要としないソリューションについて考えていました...しかし、代替手段がなければ、うまくいくでしょう、もう一度感謝します。 –

-1

あなたがのAppSettingで$区切り文字を使用する場合、これらはと交換することができる値それらがAppSettingsから表すキー値

<add key="PrivacyPolicyURL" 
    value="$domain$/Default.aspx?siteid=$siteid$&amp;locid=$locid$&amp;tpid=$tpid$" 
    /> 

置換を行うために次の関数を使用します。

public static string GetAppSetting(string key) 
{ 
    string keyValue = ConfigurationManager.AppSettings[key].ToString(); 

    foreach (System.Text.RegularExpressions.Match match in System.Text.RegularExpressions.Regex.Matches(keyValue, @"\$[\d\D]*?\$")) 
    { 
     try 
     { 
      string replaceWith = ConfigurationManager.AppSettings[match.Value.Replace("$", string.Empty)] ?? string.Empty; 
      keyValue = keyValue.Replace(match.Value, replaceWith); 
     } 
     catch 
     { 
      keyValue = keyValue.Replace(match.Value, string.Empty); 
     } 
    } 

    return keyValue; 
} 

だから例では、このような何かを生成するために、ドメイン、サイトID、LOCIDとTPIDのためのAppSettingsを挿入します。 www.mywebsite.com/Default.aspx?siteid=1001&locid=1001&tpid=1001

+0

これは素晴らしいオプションです、ありがとう!しかし、私は、たとえば、log4netセクションなど、別のセクションのappSettingsセクションで宣言された値を使用することに重点を置いていました。とにかく、私は任意のオプションがいくつかのコーディングを含むだろうと思いますか? –

関連する問題