我已经拥有它的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