3

App.configにいくつかの構成設定があるC#クラスライブラリAがあります

Method1()
{
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
}

しかし、ASP Web プロジェクト B からメソッド 1() を呼び出すと、クラス ライブラリ A の構成設定が見つかりません。

ここで何が起こっているのか分かりますか?

4

5 に答える 5

4

.Net ランタイムによって作成される構成管理構造全体は、プロセス固有です。アセンブリ固有ではありません。これは、実行中の各実行可能ファイルが app.config を取得することを意味します。Web プロジェクトは web,config を取得します (実際には Web プロジェクトは複数の web.config を持つことができます) が、アセンブリは独自の app.config を持つことができず、構成ファイル内の構成設定を読み取るコードを持つことができます。で参照されます (アセンブリを winforms アプリで参照として使用すると、MyWinformsApplication.exe.config で構成設定を確認できます。ASP.Net Web アプリでアセンブリを使用すると、Web アプリケーションで構成設定を確認できます' web.config...

于 2009-12-29T16:49:53.747 に答える
2

OpenExeConfigurationを使用してこれを行うことができると思います。

string exePath = "<full path and name of the app .exe file>";

System.Configuration.Configuration otherConfig = 
     ConfigurationManager.OpenExeConfiguration(exePath);

他の.exeのパスをWebアプリのweb.config(たとえば、appSettingsセクション)に配置し、そこから読み取ることができます。これは、ここでハードコーディングするよりも優れています。

その構成ファイルでappSettingsを表示するには、次のようにします。

AppSettingsSection otherAppSettings = otherConfig.AppSettings;

このMSDNページが役立つ場合があります。

于 2009-12-29T16:59:11.020 に答える
2

構成設定を web.config にコピーする必要があります。基本的に、ConfigurationManager が読み取るプロジェクトごとに 1 つのデフォルト構成ファイルしかありません。

于 2009-12-29T16:46:54.110 に答える
2

ライブラリには独自の構成ファイルがありません。構成設定は、そのライブラリを使用するexeで定義する必要があります

于 2009-12-29T16:47:22.353 に答える
0

Web プロジェクトの構成設定を探しています。

于 2009-12-29T16:47:09.577 に答える