web-dev-qa-db-ja.com

appSettingsとapplicationSettings。 appSettingsは古いですか?

Web.configに設定を保存する2つの方法についていくつか質問があります。

Appsettings:web.configを見てください

<appSettings>
 <add key="key1" value="value1"/>
 <add key="key2" value="value2"/>
</appSettings>

コードビハインドでの使用

ConfigurationManager.AppSettings["key1"];

ApplicationSettings/Properties(プロジェクトの「properties」タブを使用して自動生成)
web.configを見てください

<applicationSettings>
    <Projectname.Properties.Settings>
        <setting name="TestEnvironment" serializeAs="String">
            <value>True</value>
        </setting>
    </Projectname.Properties.Settings>
</applicationSettings>

コードビハインドでの使用

Properties.Settings.Default.TestEnvironment

それでは、web.configの設定のこれら2つのストレージの可能性の違いは何ですか?
私が見る限り、appSettingsの欠点は、web.configを自分で変更していることと、applicationSettingsがそうであるようにappSettingsが厳密に型指定されていないことです。

どちらもWeb展開プロジェクト内で交換可能です。

私に関する限り、appSettingsには使用しないがあります。ここに何かが足りませんか?歴史的に見られる古いものはどれですか?

53
citronas

これについては、前に説明しました: appSettingsとapplicationSettings(.NET app.config)の長所と短所

あなたの質問に関しては:古いものは<appSettings>で、2.0以前は<applicationSettings>でしたが、2.0で利用可能になりました。

利点?値を編​​集するとき、または最適なツールがメモ帳であるサーバーに値を追加するとき<applicationSettings>はveryverboseであり、時々私はただ文字列が欲しい。馬鹿げた例かもしれませんが、階層間の構成設定を微調整して、自動展開セットアップを正しく取得するとき、それがシンプルであることが非常に便利です。

他の議論の marc_s に同意する必要がありますが、本当に複雑なことをしている場合は、とにかく独自の設定セクションが必要な段階に近づいています。起動時に設定タイプにデシリアライズしているので、同じタイプのチェックをそのように取得します。XMLSerializerを介して直接行うことが唯一の違いです。

これには、Config.LDAPServerまたはSecurity.ConfigThemes.Config(ここで推測!)のように、異なる領域ごとに1つの設定を行うという利点もあります。副次的な利点としてあります。

22
Nick Craver

ApplicationSettingsは名前空間化されているため、2つの異なるアセンブリの両方で競合のない「タイムアウト」の設定が可能です。デフォルト値はコードの設定の属性を介して設定されるため、ApplicationSettingsはオプションです。

22

私が気づいたことの1つは、AppSettingsの値は<%$ AppSettings: name %> aspxページのインラインタグですが、インラインタグを介してApplicationSettings値にアクセスする同等の方法はないようです。

6
Loophole

IIS 8.0 GUI(および以前のバージョンも同様)が<applicationSettings>セクション(非表示です。つまり、パラメータを設定できないように見えます)<appSettings>はIIS 8.0で編集可能です。

VS2012/IIS 8.0がずっと同じGUI構成システムを使用していれば良かったのですが、その点で製品は同期されていないようです。どちらにしても、メモ帳でアプリケーションの設定を編集する必要があります。

接続文字列は両方のGUIに表示されますが、<applicationSettings> in IISフルパスを含む(Namespace。Properties.Settings .ConnectionStringName)。

3
galmok