Accessing Azure ServiceConfiguration settings in N

2019-07-29 23:30发布

问题:

I'm coming to the beta deployment phase of building a Node.js application running through iisnode on Windows Azure. Having set up multiple instances, as well as production/staging separation, my research has led me to the following conclusion:

If I want to change configuration settings on the fly without redeploying code, I need to use Service Configuration .cscfg files.

My problem is that I've stored various configuration settings in the <appSettings> and <iisnode> elements of web.config that I might want to change, which are currently exposed in my Node application via the process global object.

I've looked around MSDN, Node documentation and SO (the usual), and can't find if Node does or can expose Service Configuration settings in the same way. If not, is there a way I can expose them to my application?

Edit: To be more specific, I'm really only looking to move the node_env setting from web.config to Service Configuration, since I'd like to be able to switch from staging to production setup with just a config change. The reason - we're using IP switching to swap between staging and prod, and there are some very minor differences between the two (the URL of the RESTful web service it consumes, for example).

I also know I can configure node_env in an iisnode.yaml file read by iisnode, but that will still recycle the application, and I don't want to modify x yaml files and redeploy, where x is the number of instances of the production/staging application.

回答1:

You can access the configuration settings via the Azure SDK for Node.js.

To install:

npm install azure

To get the configuration settings:

var azure = require('azure');

azure.RoleEnvironment.getConfigurationSettings(function(error, settings) {
  if (!error) {
    // You can get the value of setting "setting1" via settings['setting1']
  }
});


回答2:

These settings seem to be held in an XML file located in c:\Config\ folder of the Azure machine.

I'm certain that you're not supposed to access these directly, but you could easily parse this XML and read the settings when node starts.