Reputation: 8347
Asp.net 5 has a new configuration system which utilizes json files for settings. You have to manually select the json file you want loaded as your configuration with the .AddJsonFile(string fileName)
method of the new Configuration
class.
Meanwhile, in Azure land we've got this nifty CloudConfigurationManager
class which is supposed to handle grabbing settings from the Azure Website settings or the active web.config
if a Azure setting is not found.
But how are these two things intended to work together? I'm having trouble finding any documentation. I'd like to manage my settings in Azure for production but use the config.json
for local debugging. I've had a great deal of trouble finding any examples or documentation.
Upvotes: 18
Views: 6462
Reputation: 8347
Well, it turns out that when it comes to using CloudConfigurationManager with asp.net 5, the answer is that you don't, and the boilerplate code already covered it. (Thanks to Scott Hanselman for getting back to me on twitter)
So the standard approach is something like this:
IConfiguration configuration = new Configuration()
.AddJsonFile("config.json") // adds settings from the config.json file
.AddEnvironmentVariables(); // adds settings from the Azure WebSite config
The order in which these are called means that settings from the environment variables will over-write settings from the local config. All you have to do to make use of this is make sure the Azure settings will mimic your Json settings- so if your json file looks like
{
"AppSettings": {
"ConnectionString": "blahblahblah"
}
}
You'd want to set up your setting in azure to look like
Key: AppSettings:ConnectionString
Value: blahblahblah
, and then you can go ahead and use the exact same code you'd use for the local config.
var connectionString = Configuration.Get("AppSettings:ConnectionString");
Upvotes: 25