Store common AppSettings in the web.config and an external file (configSource vs. file)
Saturday, June 27, 2009 8:19:19 AM (GMT Daylight Time, UTC+01:00)
I've started using Rick Strahl's wwAppConfiguration to allow easier access to application constants and one thing that's been bugging me is that it doesn't play nice with configSource -which we update with web deployment projects to specify Development/Staging/Live settings.
The issue is that when you set configSource on the appSettigns node, wwAppConfiguration doesn't correctly set the file's path and instead (when using the default settings) writes the new values within the <appSettings> node. The problem is then that ASP.Net complains that you cannot specify configSource and settings inside the <appSettings> node.
After a little digging, it turns out that you can use "file" in place of "configSource" for the appSettings node (and sadly only the appSettings node) and it allows you to define values within the <appsettings> node and then override them with your external file. This is fantastic because you can store your "default" values in the web.config and then override some or all of them for your various environments.
The next issue you may run into is if you use web deployment projects, in which case you may get the following error:
web.config(2): error WDP00001: section appSettings in "web.config" has 7 elements but "config\STAGING-appSettings.config" has 19 elements.
To work around this, you just need to untick the "Enforce matching section replacements" checkbox within the properties section and you're good to go!
I hope that helps someone!