10

I was working on ASP.NET MVC project and decided to extract some functionality to a separate class library project (in the same solution).

I moved some of the elements in <appSettings></appSettings> from Web.config in main project (let's call it project A) to App.config in class library project (let's call it project B). I added a reference to System.Configuration.dll to access the ConfigurationManager in project B.

Sample App.config file is for project B is below.

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

I access these settings as follows (in project B).

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

I noticed that the values for key1 and key2 returned by ConfigurationManager are null.

When debugging I see that ConfigurationManager pull values from the original Web.config in project A (the other entires in <appsettings></appsettings> section that I did not move to project B)!

This does not make any sense to me. Could someone tell me what I am doing wrong, so I could access settings in App.config?

Thanks.

sakura-bloom
  • 4,524
  • 7
  • 46
  • 61
  • Web projects use web.config, not app.config. Why do you want to change the name of the configuration file? –  Sep 09 '13 at 17:18
  • It's a separate project that is using App.config. The main web project references this project and uses its functionality. – sakura-bloom Sep 09 '13 at 17:20

1 Answers1

8

App.config that resides in a Class Library project would not be loaded (at least not without extra effort), the only configuration loaded by the framework is the Client configuration (i.e the Web.config of a project that references and uses your Class Library).

See this answer for possible solutions.

Community
  • 1
  • 1
haim770
  • 48,394
  • 7
  • 105
  • 133