2011-07-04 8 views
2

基本的に、App.configとWeb.configは接続文字列と構成のキーと値のペアについて扱いやすいです。App.configの追加オプションにアクセスするには?

しかし、これら2つのファイルの追加セクションにアクセスするにはどうすればよいですか?

The only way I can findは、設定ファイルに追加の設定を追加できるようにするためには、configuration/configSections/sectionを作成する必要があることを意味します。 configuration/configSections/sectionを使用せずにいくつかの.NETコンポーネントがカスタム設定に実際にアクセスするため、これは誤りです。たとえば、診断設定を処理する場合、セクションにはconfigSectionをファイルに追加する必要なく、セクション:

<system.diagnostics> 
    <trace autoflush="true"/> 
    <sources> 
    <source name="Samples"> 
     <listeners> 
     <add name="ConsoleListener" type="System.Diagnostics.ConsoleTraceListener"/> 
     </listeners> 
    </source> 
    </sources> 
</system.diagnostics> 

を追加することができます。

私のコードで同じことをする方法は?

+3

あなたが言及しているセクションは既に定義されていると思いますが、マシンコンフィグファイル(.NET用のグローバル)にあります。そのため、自分のapp.configで定義する必要はありません。 –

+1

これは間違いではありません。 'system.diagnostics'はmachine.configで定義されています。 –

+0

@Vladislav Zorov:提案に感謝します。あなたは答えにあなたのコメントを促進できますか? –

答えて

1

あなたが言及するセクションは未定義ではなく、マシン構成ファイル(.NET用のグローバル)で定義されています。カスタムセクションが必要な場合は、ファイルの先頭にそれらを定義し、それらを表すクラスを定義する必要があります。そのため、.NETは対応するオブジェクトの処理方法を知っています。

あなただけのオブジェクトとすべてのものを得ることなく、いくつかの設定にアクセスする必要がある場合は、あなただけConfigSectionHandlerを使用して、(すべての後に、設定ファイルがちょうど別のXMLファイルで)直接thisのようなXMLドキュメントへのアクセスなどのセクションを定義することができます。

ではなく、に直接アクセスするようにしてください。代わりに通常の方法、つまりthis guideを使用してください。すべてを検証し、コードから簡単にアクセスできるようにすることで、いくつかの問題を軽減できます。それは最初に設定するPITAですが、それはそれだけの価値があります。

0

app/web.configに独自のセクションを定義して、this great tutorialをチェックできます。

+0

あなたの答えが私が避けたいものを正確に示しているので、私の質問を完全に読まなかったと思います。 –

+0

http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspxを見てください。これは、キー/値のapp.configに値を格納する非常に基本的な方法を示していますファッション。完全なセクションを定義することは不可能です – Dominik

1

@Vladislavのコメントはそれをカバーしています。設定セクションは常に定義する必要がありますが、web/app設定ファイルには必ずしも必要ではありません。設定ファイルには階層構造があるためです。標準セクションは標準のmachine.configファイルで定義されています。

複数のアプリケーションからアクセスできるセクションが必要な場合は、machine.configファイルを修正してそこに指定することができます。しかし、これは99.99%のプログラミング状況で行うべきことではありません。そして、それは、開発者からセクションの詳細を隠すことだけです。

これを行う場合は、このセクションを定義するdllをすべてのコンピュータに提供し、それが修正されたアプリケーションを更新したままにしておく必要があります。これにはかなりのメンテナンスオーバーヘッドがあるため、これを行う際に本当に有益であることを絶対に確かめなければなりません。

あなたの質問に対する簡単な回答は、はいできますが、決して行うべきではありません。非常に時折、これは間違っています。

関連する問題