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.
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.