3

我有一个 C# 类库 A,它的 App.config 中有一些配置设置,我使用它们访问它们

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

但是当我从我的 ASP Web 项目 B 中调用方法 1() 时,它在类库 A 中找不到配置设置

知道这里发生了什么吗?

4

5 回答 5

4

.Net 运行时创建的整个配置管理结构是特定于进程的。不是特定于装配的。这意味着每个正在运行的可执行文件都会获得一个 app.config。一个 Web 项目得到一个 web,config(实际上一个 Web 项目可以有多个 web.configs),但是程序集不能有自己的 app.configs,它们可以有代码来读取配置文件中的配置设置,无论它们是什么进程在中引用(程序集用作 winforms 应用程序中的引用,然后它可以看到 MyWinformsApplication.exe.config 中的配置设置;在 ASP.Net Web 应用程序中使用该程序集,然后它可以看到 Web 应用程序中的配置设置' 网络配置...

于 2009-12-29T16:49:53.747 回答
2

配置设置必须复制到您的 web.config。本质上,ConfigurationManager 读取的每个项目只有一个默认配置文件。

于 2009-12-29T16:46:54.110 回答
2

库没有自己的配置文件。配置设置应在使用该库的 exe 中定义

于 2009-12-29T16:47:22.353 回答
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 页面可能会有所帮助。

于 2009-12-29T16:59:11.020 回答
0

它正在您的 Web 项目中寻找配置设置。

于 2009-12-29T16:47:09.577 回答