2017-07-28 36 views
2

web.configファイル(IIS内)の項目から文字列の配列を作成しようとしています。web.configで配列を項目に読み込む方法

のweb.config

<appSettings> 
    <add key="favourite" value="url1; site1" /> 
    <add key="favourite" value="url2; site2" /> 
    <add key="favourite" value="url3; site3" /> 
</appSettings> 

C#

// Reads first favourite into string. 
public string _favourites = ConfigurationManager.AppSettings ["favourite"]; 

Iはストリングセミコロン(と[] _favourites配列に読み取られる各お気に入りを希望私は後でそれを解析するだろう)。 web.configはXMLファイルなので、私はXMLファイルを開いてデータを取り出すことができますが、これを行うための簡単な方法はConfigurationManagerを使用していますか?

+0

重複していますか? - を参照してください:https://stackoverflow.com/questions/11728491/add-array-to-key-in-web-config –

+0

'ConfigurationManager.Appsettings'はあなたにキーの最後の値を返します。私はここで回避策を見つけましたが、私はそれをテストしていません。 https://www.codeproject.com/Articles/4302/How-to-make-AppSettings-work-with-multiple-values – Norsk

+0

いいえ、それは私が探しているものではありません。 <すべてのstring [] emails。 – UltraJ

答えて

0

ハックがあるかどうかわかりませんが、複数の値を持つ設定が1つだけあります。

<appSettings> 
    <add key="favourite" value="url1;site1;url2;site2;url3;site3;" /> 
</appSettings> 

又は

<appSettings> 
    <add key="favourite" value="url1=site1;url2=site2;url3=site3;" /> 
</appSettings> 

別の解決策は、別の設定ファイルであるか、またはデータベースでこれを格納します。

お気に入りが変更されて変更されると想像します。web.configが原因でアプリが再起動する可能性があります。

0

約: 1.プロジェクト>プロパティをクリックしてください。 2.設定に移動します。表示されている場合、このプロジェクトには設定ファイルがありません。クリックして作成します。 3. SystemCollections.Speciliazed.StringCollectionを作成します。 4.名前を指定します(私の例StatusReason)。右側の行末に...(3つの)ドットがあります 5.それらを押して、必要な設定を追加します。 1行に1つ。 サンプル:

Valid=979580000 
Invalid=979580001 
Broken=979580002 
ReadyForCollect=979580003 
Missing=979580004 
Refine=979580005 

とウェブの設定で、それはそのように見えます。

<applicationSettings> 
<WebApplication.BookServices> 
    <setting name="StatusReason" serializeAs="Xml"> 
      <value> 
       <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
           <string>Valid=979580000</string> 
       <string>Invalid=979580001</string> 
       <string>Broken=979580002</string> 
       <string>ReadyForCollect=979580003</string> 
       <string>Missing=979580004</string> 
       <string>Refine=979580005</string> 
       </ArrayOfString> 
      </value> 
      </setting> 
</WebApplication.BookServices> 
</applicationSettings> 

と文字列のあなたの配列を取得:

using WebApplication.BookServices.Properties; 

、そこにあなたが設定の配列を持っている:

var settings = Settings.Default.StatusReason; 
//TODO add any logic, if needed to split 

は、プロパティへのプロジェクト参照を追加します。

+0

区切り文字 ';'を追加します。申し訳ありませんが、私はあなたの直接のニーズに私の例に合っていませんでした。私のデリミタは '='で、辞書に追加します。 'var settings = Settings.Default.StatusReason; 辞書<文字列、文字列> statusReason =新しい辞書<文字列、文字列>(); foreach(設定でvarを設定) { string [] words = set.Split( '='); statusReason.Add(words [1]、words [0]); } ' – raichiks

0

何あなたのような単一のキーですべての配列の値を追加した場合 - 文字列として

<appSettings> 
    <add key="favourite" value="url1;site1,url2;site2,url3;site3" /> 
</appSettings> 

読む、そのキー値 -

public string _favourites = ConfigurationManager.AppSettings["favourite"]; 

し、その後で文字列を分割「」(カンマ)このように -

string[ ] _favouritesArr = _favourites.Split(','); 

これは、配列_favouritesArrのすべての値を返します。

関連する問題