Last day, one of my colleges had to move some configuration items from application configuration file to cscfg files (Windows Azure Service Configuration Schema).
He tried for some hours to move the configuration to cscfg files but without success. Even if the configuration was done 1 to 1 to the msdn example and the project was built and deployed with success, the configuration could not be accessed.
In the next part of the post I will describes the steps that were done by him:
1. Identify the configuration that need to be moved in the configuration file:
Did you spot the problem?
The configuration was made perfectly; the problem was with at step 4. When we want to access configurations from cscfg file we need to use the RoleEnvironmnet and not the ConfigurationManager. The configurations from cscgf files will not be available through AppSetings collection.
The code should be changed to something like this:
He tried for some hours to move the configuration to cscfg files but without success. Even if the configuration was done 1 to 1 to the msdn example and the project was built and deployed with success, the configuration could not be accessed.
In the next part of the post I will describes the steps that were done by him:
1. Identify the configuration that need to be moved in the configuration file:
<add key="BingKey" value="XXXXXXXXXXXXXXXXX" />
2. Create the key definition in the csdef (Windows Azure Service Definition Schema) file:<ServiceDefinition ..
<WebRole ...
<ConfigurationSettings>
<Setting name="BingKey" />
</ConfigurationSettings>
</WebRole>
<ServiceDefinition>
3. Add the value of the given configuration key to the cscfg file (cloud and also local configuration):<ServiceConfiguration ...
<Role ...
<ConfigurationSettings>
<Setting name="BingKey" value="XXXXXXXXXXXXXXXX" />
</ConfigurationSettings>
</Role>
</ServiceConfiguration>
4. Access the configuration key:string bingKey = ConfigurationManager.AppSettings[“BingKey”];
Every time when the key is retrieved, the return value is null. If we check the settings, we will notify that we cannot find the “BingKey” through the list of available setting. Did you spot the problem?
The configuration was made perfectly; the problem was with at step 4. When we want to access configurations from cscfg file we need to use the RoleEnvironmnet and not the ConfigurationManager. The configurations from cscgf files will not be available through AppSetings collection.
The code should be changed to something like this:
string bingKey = RoleEnvironment.GetConfigurationSettingValue("BingKey");
After this fix everything works perfectly. For more informations about RoleEnvironment please check the following link.
Comments
Post a Comment