我有一个C#类库A,它在App.config中有一些配置设置我用
访问它们Method1()
{
string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
}
但是当我从ASP Web项目B调用方法1()时,它无法在类库A中找到配置设置
知道这里发生了什么吗?
答案 0 :(得分:4)
.Net运行时创建的整个配置管理结构是特定于进程的。不具体的装配。这意味着每个正在运行的可执行文件都会获得app.config。一个Web项目得到一个web,config(实际上一个web项目可以有多个web.configs),但程序集不能有自己的app.configs,他们可以有代码来读取配置文件中的配置设置,无论他们正在进行什么过程引用( 使用 程序集作为winforms应用程序中的引用,然后它可以在MyWinformsApplication.exe.config中查看配置设置;在ASP中使用程序集。网络应用程序,然后它可以在Web应用程序的web.config ...
中看到confiog设置答案 1 :(得分:2)
必须将配置设置复制到web.config。实际上,ConfigurationManager读取的每个项目只有一个默认配置文件。
答案 2 :(得分:2)
库没有自己的配置文件。配置设置应在使用该库的exe中定义
答案 3 :(得分: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可能会有所帮助。
答案 4 :(得分:0)
它正在寻找您的网络项目中的配置设置。