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


102

違いは何だWebConfigurationManagerConfigurationManager

いつどちらを使用すればよいですか?

更新しました

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

警告付きで再度更新!

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


1
「警告」は正確ではないと思います。私はsystem.configurationを必要とせずにsystem.web.configurationを接続文字列に使用します
sclarson

回答:


95

WebConfigurationMangerは、Webアプリケーション内で構成の継承を処理する方法を知っています。ご存知のように、1つのアプリケーションに複数のweb.configファイルが存在する可能性があります-サイトのルートに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);
}

25

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

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

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

WebConfigurationManagerを見て、ConfigurationManagerでは簡単に実行できないことを代わりに使用できるかどうかを確認することをお勧めします。それ以外の場合は、ConfigurationManagerを使用すると、WebとデスクトップAPの間でコードをシームレスに使用することがはるかに簡単になります。


4

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

エラーが発生した場合

タイプ[System.Configuration.ConnectionStringSettingsCollection]の式に[]を使用したインデックス作成を適用できません

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

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

アセンブリSystem.Configurationへの参照があることを確認してください


3

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.