WebConfigurationManager
とConfigurationManager
の違いは何ですか?
いつ他を使用する必要がありますか?
[〜#〜] updated [〜#〜]
私はWebConfigurationManager
を見ましたが、何らかの理由で、ConfigurationManager
(配列のように)のように接続文字列にアクセスできません。 MSがこのようにした理由を誰か教えてもらえますか? WebConfigurationManager
を使用して必要な接続文字列を取得するのは苦痛のようです。
CAVEATで更新されました!
プロジェクトに追加されたSystem.Configuration
名前空間への参照がない場合、配列のようなWebConfigurationManager.ConnectionStrings
にアクセスしようとすると、Visual Studioでエラーが表示されます。
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);
}
WebConfigurationManagerは、ASP.NETアプリケーション専用に作成されています。
WebConfigurationManagerは、Webアプリケーションに適用可能な構成ファイルをロードするための追加メソッドを提供します。
ConfigurationManagerは、「。exe」アプリケーションに適用可能な構成ファイルをロードするメソッドも提供します。
WebConfigurationManagerを見て、ConfigurationManagerでできないことを何でも提供し、代わりにそれを使用するかどうかを確認することをお勧めします。
WebConfigurationManagerはSystem.Webアセンブリにありますが、それが返すConnectionStringSettingsCollectionはSystem.Configurationにあります。
エラーが発生している場合
[System.Configuration.ConnectionStringSettingsCollection]型の式に[]を使用したインデックス付けを適用できません
配列インデックスにアクセスしようとしています...
WebConfigurationManager.ConnectionStrings["Name"].ConnectionString
assembly System.Configurationへの参照があることを確認してください
接続文字列の意味がわからない。
WebConfigurationManager.ConnectionStrings を呼び出すと、System.Configuration.ConnectionStringSettingsCollectionが返されます。これは、 ConfigurationManager.ConnectionStrings を呼び出した場合と同じです。
それ以外の場合、XORが言うように、複数の階層web.configを処理し、必要に応じてアプリケーション内のフォルダー内を移動するときにそれらを結合するように設計されています。