我已經擁有它的App.config一些配置設置的C#類庫我訪問他們C#讀配置設置
Method1()
{
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
}
但是,當我打電話方法1()從我的ASP Web項目B,它無法在類庫中找到配置設置A
任何想法發生了什麼?
我已經擁有它的App.config一些配置設置的C#類庫我訪問他們C#讀配置設置
Method1()
{
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
}
但是,當我打電話方法1()從我的ASP Web項目B,它無法在類庫中找到配置設置A
任何想法發生了什麼?
.Net運行時創建的整個配置管理結構是特定於進程的。不是特定裝配。這意味着每個正在運行的可執行文件都會獲得一個app.config一個Web項目獲取一個web,config(實際上一個web項目可以有多個web.configs),但程序集不能有自己的app.configs,它們可以有代碼來讀取配置文件中的配置設置, (其中使用程序集作爲WinForms應用程序中的參考,那麼它可以在MyWinformsApplication.exe.config中看到配置設置;在ASP.Net Web應用程序中使用程序集,然後它可以看到confiog設置在Web應用程序的web.config中......
必須將配置設置複製到您的web.config。本質上,每個項目只有一個ConfigurationManager讀取的默認配置文件。
它正在尋找您的web項目中的配置設置。
庫沒有自己的配置文件。應該在使用該庫的exe中定義配置設置
我相信你可以使用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可能的幫助。
對於Web應用程序,請使用「WebConfigurationManager」而不是ConfigurationManager – 2009-12-29 17:08:41