In part 1 of this series we dealt with how to manage data in Windows Azure storage for ScrumWall. Then in part 2 we dealt with deployment of ScrumWall to Azure and in particular accessing configuration.
Having completed moving ScrumWall to the Windows Azure Platform, we have encountered an issue that required additional work.
ScrumWall uses Windows Live to provide authentication for users. A simple way to build Windows Live into Azure is to use the Windows Live Web Role then using the Windows Live controls, such as the IDLoginStatus control. These create settings in the web.config for wll_appid and wll_secret. This information is unique for Windows Live for each application. Therefore, different settings are required for a development version and live version of an application. When developing for Azure it is very convenient to centralize all configuration settings in the ServiceConfiguration.cscfg file.
Using reflector to look into the IDLoginStatus control however reveals that the OnLoad event handler uses a private method ReadConfigStringRunTime to retrieve configuration information from only the appSetttings.
private string ReadConfigStringRunTime(string key)
{
string str = ConfigurationSettings.AppSettings[key];
if (str == null)
{
str = string.Empty;
}
return str;
}
There is no simple mechanism to override the standard behavior of this control. Instead, we created a bespoke control which allowed settings to be retrieved from the Azure configuration file. Information on this can be found here http://msdn.microsoft.com/en-us/library/bb676633.aspx and http://www.codeplex.com/WLQuickApps.