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には使用しないがあります。ここに何かが足りませんか?歴史的に見られる古いものはどれですか?
これについては、前に説明しました: appSettingsとapplicationSettings(.NET app.config)の長所と短所 。
あなたの質問に関しては:古いものは<appSettings
>で、2.0以前は<applicationSettings
>でしたが、2.0で利用可能になりました。
利点?値を編集するとき、または最適なツールがメモ帳であるサーバーに値を追加するとき<applicationSettings
>はveryverboseであり、時々私はただ文字列が欲しい。馬鹿げた例かもしれませんが、階層間の構成設定を微調整して、自動展開セットアップを正しく取得するとき、それがシンプルであることが非常に便利です。
他の議論の marc_s に同意する必要がありますが、本当に複雑なことをしている場合は、とにかく独自の設定セクションが必要な段階に近づいています。起動時に設定タイプにデシリアライズしているので、同じタイプのチェックをそのように取得します。XMLSerializerを介して直接行うことが唯一の違いです。
これには、Config.LDAPServer
またはSecurity.Config
やThemes.Config
(ここで推測!)のように、異なる領域ごとに1つの設定を行うという利点もあります。副次的な利点としてあります。
ApplicationSettingsは名前空間化されているため、2つの異なるアセンブリの両方で競合のない「タイムアウト」の設定が可能です。デフォルト値はコードの設定の属性を介して設定されるため、ApplicationSettingsはオプションです。
私が気づいたことの1つは、AppSettingsの値は<%$ AppSettings: name %>
aspxページのインラインタグですが、インラインタグを介してApplicationSettings
値にアクセスする同等の方法はないようです。
IIS 8.0 GUI(および以前のバージョンも同様)が<applicationSettings>
セクション(非表示です。つまり、パラメータを設定できないように見えます)<appSettings>
はIIS 8.0で編集可能です。
VS2012/IIS 8.0がずっと同じGUI構成システムを使用していれば良かったのですが、その点で製品は同期されていないようです。どちらにしても、メモ帳でアプリケーションの設定を編集する必要があります。
接続文字列は両方のGUIに表示されますが、<applicationSettings>
in IISフルパスを含む(Namespace。Properties.Settings .ConnectionStringName)。