55

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

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

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

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

ConfigurationManager.AppSettings["key1"];

ApplicationSettings /プロパティ(プロジェクトの「プロパティ」タブを使用して自動生成)
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を自分で変更していることと、appSettingsが強く入力されていないことです。

どちらもWebデプロイメントプロジェクト内で交換可能です。

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

4

4 に答える 4

25

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

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

アドバンテージ?値を編​​集しているとき、またはメモ帳が最適なサーバーで値を追加しているときは、非常に冗長であり、文字列が必要<applicationSettingsな場合もあります。ばかげた例かもしれませんが、自動展開のセットアップを正しく行うために階層間の構成設定を微調整する場合、それが単純であることは非常に便利です。

他の議論のmarc_sに同意する必要がありますが、本当に複雑なことをしている場合は、とにかく独自の構成セクションを用意する必要があるという点に近づいているでしょう。起動時に構成タイプにデシリアライズしているので...同じタイプのチェックをその方法で取得します。XMLシリアライザーを直接経由することが唯一の違いです。

これには、私が行うという利点もあります。または、 (ここで推測します!)Config.LDAPServerのように、それぞれ異なる領域に対して1つの構成を行うこともできます。副次的な利点として、非常に便利で明確な命名スキームをそこに入れることができます。Security.ConfigThemes.Config

于 2010-02-28T12:02:36.377 に答える
23

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

于 2011-10-26T05:40:46.873 に答える
6

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

于 2011-10-26T05:35:14.300 に答える
3

<applicationSettings>IIS 8.0 GUI(および以前のバージョンも)はセクションを編集できません(非表示、つまりパラメーターを構成できないように見えます)が、IIS8.0では編集可能であることを追加したいと思い<appSettings>ます。

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

接続文字列は両方のGUIに表示さ<applicationSettings>れますが、IISで使用する場合は、フルパス(名前空間.Properties.Settings。ConnectionStringName )が含まれます。

于 2013-08-07T13:37:16.127 に答える