Question

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.

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top