External AppSettings File NOT merging with web.config
You can access multiple config files by using WebConfigurationmanager method. add namespace:
using System.Web.Configuration;
So, to access the appSettings of
../SomeProjectFolder/Environment/Web.config
, you can do:
var config = WebConfigurationManager.OpenWebConfiguration("~/SomeProjectFolder/Environment/");
string username = config.AppSettings.Settings["username"].Value;
Hope this helps.
I was able to confirm that the external app.config works with a simple project.
app.Config (in same directory as web.config)
<appSettings>
<add key="testAppConfigString" value="APP string exists!"/>
<add key="testOverrideString" value="!!OVERRIDE string exists in app.config!"/>
</appSettings>
web.config
...
<appSettings file="app.config">
<add key="testWebConfigString" value="web config string exists!"/>
<add key="testOverrideString" value="OVERRIDE string exists in web.config!"/>
</appSettings>
...
Default.aspx
...
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
web: <asp:Label runat="server" ID="lblWeb" /><br/>
app: <asp:Label runat="server" ID="lblApp" /><br/>
override: <asp:Label runat="server" ID="lblOverride" /><br/>
</asp:Content>
...
Inside the Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
lblWeb.Text = ConfigurationManager.AppSettings["testWebConfigString"];
lblApp.Text = ConfigurationManager.AppSettings["testAppConfigString"];
lblOverride.Text = ConfigurationManager.AppSettings["testOverrideString"];
}
The resulting page should have the following text:
web: web config string exists!
app: APP string exists!
override: !!OVERRIDE string exists in app.config!
I just had the same issue (configs not merging as expected), but after explicitly deleting the /bin and /obj directories from the solution-folder and performing a rebuild, everything worked as expected again, so I would suggest you try that and see how it works...
PS: Also make sure you set the file properties of the external config to 'Copy Always'. Otherwise it won't exist in the bin-directory where your running application lives.