配置管理器读取错误的文件——Web.config而不是App.config。

10

我正在开发ASP.NET MVC项目,并决定将一些功能提取到单独的类库项目中(在同一个解决方案中)。

我从主项目(让我们称之为A项目)的Web.config中移动了一些元素到类库项目(让我们称之为B项目)的App.config中的<appSettings></appSettings>。 我添加了System.Configuration.dll的引用以访问B项目中的ConfigurationManager。

B项目的示例App.config文件如下。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Key1" value="Value1"/>
    <add key="Key2" value="Value2"/>
  </appSettings>
</configuration>

在项目B中,我按照以下方式访问这些设置。

string key1 = ConfigurationManager.AppSettings["Key1"];
string key2 = ConfigurationManager.AppSettings["Key2"];

我注意到由ConfigurationManager返回的key1key2的值为null

调试时,我发现ConfigurationManager从项目A中的原始Web.config中提取了值(在<appsettings></appsettings>部分中我未移动到项目B中的其他条目)!

这对我来说没有任何意义。有人可以告诉我我做错了什么,以便我可以访问App.config中的设置吗?

谢谢。


Web项目使用web.config而不是app.config。为什么要更改配置文件的名称? - user47589
这是一个独立的项目,它使用 App.config。主 Web 项目引用此项目并使用其功能。 - sakura-bloom
1个回答

8

App.config文件位于类库项目中将不会被加载(至少需要额外的努力),框架只会加载客户端配置(即引用和使用您的类库的项目的Web.config)。

请参见此答案以获取可能的解决方案。


我想在我的情况下最好将所有的设置都保存在 Web.config 中,因为是客户端提供这些值。感谢您澄清这一点! - sakura-bloom
你有查看链接中的可能解决方案吗?它相对容易实现。 - haim770
你说得对,这个做起来相对容易。我会考虑用那种方式去做。 - sakura-bloom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接