web-dev-qa-db-ja.com

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

WebConfigurationManagerConfigurationManagerの違いは何ですか?

いつ他を使用する必要がありますか?

[〜#〜] updated [〜#〜]

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

CAVEATで更新されました!

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

99
John Bubriski

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

Reflectorを使用してWebConfigurationManagerを見ると、状況は明らかです。

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

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

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

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

ConfigurationManagerは、「。exe」アプリケーションに適用可能な構成ファイルをロードするメソッドも提供します。

WebConfigurationManagerを見て、ConfigurationManagerでできないことを何でも提供し、代わりにそれを使用するかどうかを確認することをお勧めします。

25

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

エラーが発生している場合

[System.Configuration.ConnectionStringSettingsCollection]型の式に[]を使用したインデックス付けを適用できません

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

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

assembly System.Configurationへの参照があることを確認してください

4
WDuffy

接続文字列の意味がわからない。

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

それ以外の場合、XORが言うように、複数の階層web.configを処理し、必要に応じてアプリケーション内のフォルダー内を移動するときにそれらを結合するように設計されています。

3