I am trying to retrieve a custom setting from local.settings.json file. Example I am trying to read tables list present in the below local.settings.json file
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true",
"TableList": "TestTableName1,TestTableName2"
}
}
Using the following code am reading it
string tableslist = ConfigurationManager.AppSettings["TableList"];
and it works, but I've read in a few places that this works only when debugging locally, it might not work after it is deployed, in production environment. Could someone point me how to do this in the right way? Or the problem is only applicable to the connection string related settings?
@Kirk and @Slava have helped you get rid of confusion. Just add some details for you to refer.
By default, publication neither upload local.settings.json to Azure, nor makes modification on Application settings based on that local file, hence we need to update them manually on Azure portal. We can also do that on VS publish panel.(Create profile first if we need to change settings before publish.)
About how to get parameters in app settings, one thing to note is that
ConfigurationManager
is no long supported in v2 function(runtime beta), may only get null or exception with it. For v1 function(runtime ~1), it still works.For v1 function
To read Application settings on Azure(also
Values
in local.settings.json),System.Environment.GetEnvironmentVariable($"{parameterName}")
is recommended.Turn to Connection strings, unfortunately GetEnvironmentVariable only works on Azure because Connection strings(
ConnectionStrings
in local.settings.json) are not imported into Environment Variables. So we need ConfigurationManager, which works in both Azure and local env. Of course it can read Application settings as well.For v2 function, two choices for both Application settings and Connection strings.
One is to use GetEnvironmentVariable. We can refer to this list for Prefixes of Connection String on Azure.
Another one is to use ConfigurationBuilder. Add ExecutionContext parameter, which is used to locate function app directory.