2017-03-22 10 views
0

名前と値のペアのコレクションとして、私のweb.configファイルの 'appSettings'セクション内の値を取得する方法はありますか?このオブジェクトを返すAPIコントローラメソッドを作成して、フロントエンド(理想的にはJSONオブジェクトとして)からコレクションの設定にアクセスできるようにしたいと考えています。私はWebConfigurationManager.AppSettingsを返そうとしましたが、値のない設定の名前だけを含む文字列を返します。私はほぼ2時間の答えを探していたが、1時間は見つけられなかった。どんな助け?ありがとう。名前と値のペアのコレクションとしてWeb APIのappSettingsを取得

答えて

1

NameValueCollectionタイプが単純な名前/値辞書以上のものであり、必ずしも簡単に1つとして表現されるとは限らないため、わかっているこのための単純なメカニズムはありません。

NameValueCollectionのかもしれの各キーには複数の値を持っています。

複数の値が特定に割り当てられている場合、そのは、これらの値の全てのコンマ区切りのリストとなります。これらの値のいずれかにカンマが含まれていると、そのような値の解読が困難になります(つまり、アプリケーション/コンテキスト固有)。

結果として、それぞれ特定のNameValueCollectionの内容をどのように処理する必要があるかを決定する必要があります。

あなたの特定ののAppSettingsは本当に単純な名前/値のペアで構成されてか、あなたはもちろんのと同じような何かを行うことができ、その後、多値をカンマ区切りの任意に対処するために満足している場合:

var dict = new System.Collections.Generic.Dictionary<String, String>(); 
var settings = System.Configuration.ConfigurationManager.AppSettings; 

foreach (var k in settings.AllKeys) 
{ 
    dict.Add(k, settings[k]); 
} 

var json = Newtonsoft.Json.JsonConvert.SerializeObject(dict); 

うまくいけばしています完全なソリューションを提供していない場合は、適切なトラックを設定します。

+0

ご回答ありがとうございます。私は実際にこのソリューションを考えましたが、アイテムをループする必要がない別のソリューションがあると考えました。しかし、このソリューションより簡単な方法はないようです。 NameValueCollectionに関する追加情報を感謝します。他に2時間以内に優れたソリューションが出てこない場合は、あなたの答えを正しい答えとして受け入れます:)ありがとうございます! – Rian

関連する問題