2009-12-29 63 views
3

我已經擁有它的App.config一些配置設置的C#類庫我訪問他們C#讀配置設置

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

但是,當我打電話方法1()從我的ASP Web項目B,它無法在類庫中找到配置設置A

任何想法發生了什麼?

+1

對於Web應用程序,請使用「WebConfigurationManager」而不是ConfigurationManager – 2009-12-29 17:08:41

回答

4

.Net運行時創建的整個配置管理結構是特定於進程的。不是特定裝配。這意味着每個正在運行的可執行文件都會獲得一個app.config一個Web項目獲取一個web,config(實際上一個web項目可以有多個web.configs),但程序集不能有自己的app.configs,它們可以有代碼來讀取配置文件中的配置設置, (其中使用程序集作爲WinForms應用程序中的參考,那麼它可以在MyWinformsApplication.exe.config中看到配置設置;在ASP.Net Web應用程序中使用程序集,然後它可以看到confiog設置在Web應用程序的web.config中......

2

必須將配置設置複製到您的web.config。本質上,每個項目只有一個ConfigurationManager讀取的默認配置文件。

0

它正在尋找您的web項目中的配置設置。

2

庫沒有自己的配置文件。應該在使用該庫的exe中定義配置設置

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 page可能的幫助。