App.configにいくつかの構成設定があるC#クラスライブラリAがあります
Method1()
{
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
}
しかし、ASP Web プロジェクト B からメソッド 1() を呼び出すと、クラス ライブラリ A の構成設定が見つかりません。
ここで何が起こっているのか分かりますか?
App.configにいくつかの構成設定があるC#クラスライブラリAがあります
Method1()
{
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
}
しかし、ASP Web プロジェクト B からメソッド 1() を呼び出すと、クラス ライブラリ A の構成設定が見つかりません。
ここで何が起こっているのか分かりますか?
.Net ランタイムによって作成される構成管理構造全体は、プロセス固有です。アセンブリ固有ではありません。これは、実行中の各実行可能ファイルが app.config を取得することを意味します。Web プロジェクトは web,config を取得します (実際には Web プロジェクトは複数の web.config を持つことができます) が、アセンブリは独自の app.config を持つことができず、構成ファイル内の構成設定を読み取るコードを持つことができます。で参照されます (アセンブリを winforms アプリで参照として使用すると、MyWinformsApplication.exe.config で構成設定を確認できます。ASP.Net Web アプリでアセンブリを使用すると、Web アプリケーションで構成設定を確認できます' web.config...
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ページが役立つ場合があります。
構成設定を web.config にコピーする必要があります。基本的に、ConfigurationManager が読み取るプロジェクトごとに 1 つのデフォルト構成ファイルしかありません。
ライブラリには独自の構成ファイルがありません。構成設定は、そのライブラリを使用するexeで定義する必要があります
Web プロジェクトの構成設定を探しています。