87

WebConfigurationManagerとConfigurationManagerの違いは何ですか?WebConfigurationManagerとConfigurationManagerの違いは何ですか?

いつ別のものを使用する必要がありますか?

UPDATED私はちょうどWebConfigurationManagerを見て、そしてあなたが(配列のように)のConfigurationManagerでそうであるように、何らかの理由で、あなたは、接続文字列にアクセスすることはできません。 MSがなぜこのようにしたのか誰にでも教えてもらえますか? WebConfigurationManagerを使用して必要な接続文字列を取得するのは難しいようです。

CAVEAT付きUPDATED AGAIN!

"System.Configuration"名前空間への参照がプロジェクトに追加されていない場合、配列のようなWebConfigurationManager.ConnectionStringsにアクセスしようとすると、Visual Studioにエラーが表示されます。

+1

私は、 『警告』が非常にあるとは思いません正確。 system.configurationを必要とせずに接続文字列にsystem.web.configurationを使用します – sclarson

答えて

83

WebConfiguratonMangerは、Webアプリケーション内の構成継承を処理する方法を知っています。ご存知のように、1つのアプリケーションに複数のweb.configファイルが存在する可能性があります.1つはサイトのルートにあり、1つはサブディレクトリにあります。 GetSection()メソッドにパスを渡すことで、オーバーライドされた設定を取得することができます。

我々はリフレクターでWebConfigurationManagerでlookeたい場合

はその後の事は明確である:

public static object GetSection(string sectionName) 
{ 
    ... 
    return ConfigurationManager.GetSection(sectionName); 
} 

public static object GetSection(string sectionName, string path) 
{ 
    ... 
    return HttpConfigurationSystem.GetSection(sectionName, path); 
} 
23

WebConfigurationManagerは、特にASP.NETアプリケーション用に作られています。

WebConfigurationManagerは、Webアプリケーションに適用可能な構成ファイルをロードするための追加の方法を提供します。

ConfigurationManagerには、 ".exe"アプリケーションに適用可能な設定ファイルを読み込むメソッドもあります。

私はWebConfigurationManagerを見て、単にConfigurationManagerで行うことができないものを提供しているかどうかを確認し、代わりにConfigurationManagerを使用すると、デスクトップAP。

3

あなたは、接続文字列については何を意味するかわかりません。

WebConfigurationManager.ConnectionStringsを呼び出すと、System.Configuration.ConnectionStringSettingsCollectionが返されます。これは、ConfigurationManager.ConnectionStringsを呼び出した場合と同じです。

そうでなければ、XORによれば、複数の階層web.configを処理し、アプリケーション内のフォルダを移動するときに必要に応じてそれらを組み合わせるように設計されています。

4

WebConfigurationManagerはSystem.Webアセンブリにありますが、返されるConnectionStringSettingsCollectionはSystem.Configurationにあります。

あなたがエラーに

を取得している場合は、[]型 の表現に「System.Configurationでインデックスを適用することはできません。ConnectionStringSettingsCollection」

配列インデックスにアクセスしようとしているときに...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString 

あなたは、アセンブリSystem.Configurationへの参照を持っていることを確認してください