Exemple #1
0
        public static void ConfigureRole()
        {
            // Allow multiple simultaneous HTTP request threads
            ServicePointManager.DefaultConnectionLimit = 12;

            // Allow Azure Storage to always use the latest version of a config setting
            CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
            {
                if (!AzureRoleEnvironment.IsAvailable())
                {
                    configSetter(ConfigurationManager.AppSettings[configName]);
                    return;
                }

                configSetter(AzureRoleEnvironment.GetConfigurationSettingValue(configName));
                // Apply any changes to config when the config is edited http://msdn.microsoft.com/en-us/library/windowsazure/gg494982.aspx
                AzureRoleEnvironment.Changed += (sender, arg) =>
                {
                    if (!arg.Changes.OfType <RoleEnvironmentConfigurationSettingChange>().Any(change => (change.ConfigurationSettingName == configName)))
                    {
                        return;
                    }

                    if (!configSetter(AzureRoleEnvironment.GetConfigurationSettingValue(configName)))
                    {
                        AzureRoleEnvironment.RequestRecycle();
                    }
                };
            });

            // Configure local resources
            var localTempPath = GetLocalResourcePathAndSetAccess(TempLocalResource);

            GetLocalResourcePathAndSetAccess(SitesLocalResource);
            GetLocalResourcePathAndSetAccess(ExecutionLocalResource);

            // WebDeploy creates temporary files during package creation. The default TEMP location allows for a 100MB
            // quota (see http://msdn.microsoft.com/en-us/library/gg465400.aspx#Y976).
            // For large web deploy packages, the synchronization process will raise an IO exception because the "disk is full"
            // unless you ensure that the TEMP/TMP target directory has sufficient space
            Environment.SetEnvironmentVariable("TMP", localTempPath);
            Environment.SetEnvironmentVariable("TEMP", localTempPath);
        }