I have a .NET Core 6 app, and I need it to load a setting from appsettings.json in the run folder.
The code to load the option is:
var sections = new ConfigurationBuilder().AddJsonFile( "C:\DTS_API_8\HereIntegrationSystemTest.NetCore\bin\Debug\net6.0\appsettings.json" ).Build().GetSection( "AppSettings" );
string serverURL = sections[ "DTS_url" ];
string serverURL2 = new ConfigurationBuilder().AddJsonFile( "appsettings.json" ).Build().GetSection( "AppSettings" ).GetValue<string>( "DTS_url" );
afterLoad = true;
The appconfig.json file is like:
{
"AppSettings": {
"DTS_url": "https://localhost:44353"
},
...
At line “afterLoad = true”, The variable serverURL always contains the value “https://localhost:44353” (correct).
But serverURL2 only has the value every second run, alternating between null and “https://localhost:44353”.
The above alternating behavior we see when appconfig.json file is marked as “Always copy” to execution folder. If appconfig.json is marked as “Copy if newer”, then serverURL2 is always null at afterLoad = true;
Looking in the execution bin folder, the appconfig.json file is always the same and always has the setting “DTS_url”. How can this be? I need it to always load the option without hardcoding the whole path to appconfig.json.