2012-08-15 77 views
1

我正在构建通过Windows Azure上的iisnode运行的Node.js应用程序的beta部署阶段。已经设立了多个实例,以及生产/分期分离,我的研究使我得出以下结论:访问Node.js中的Azure服务配置设置

如果我想改变在运行的配置设置,而无需重新部署代码,我需要使用服务配置.cscfg文件。

我的问题是,我已经存储在web.config<appSettings><iisnode>,也就是说,我可能要改变,这是目前在通过过程全局对象我节点应用展示的各种配置设置。

我浏览过MSDN,Node documentationSO(通常情况下),并且无法找到节点是否可以以相同的方式公开服务配置设置。如果没有,我可以将它们暴露给我的应用程序吗?

编辑:更具体地讲,我真的只着眼于node_env设置从web.config移动服务配置,因为我希望能够从登台到生产安装,只需配置切换开关。原因 - 我们使用IP交换来在分段和prod之间进行交换,并且两者之间存在一些细微的差异(例如,它使用的RESTful Web服务的URL)。

我也知道我可以在iisnode.yaml文件由iisnode读取配置node_env,但仍然会回收应用程序,我不希望修改X YAML文件并重新部署,其中X是多少生产/临时应用程序的实例。

回答

7

您可以通过Azure SDK for Node.js访问配置设置。

要安装:

npm install azure

获取配置设置:

var azure = require('azure'); 

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

这正是我所追求的;感谢指针! – 2012-09-11 08:26:23

1

这些设置似乎保存在位于Azure计算机的c:\ Config \文件夹中的XML文件中。

我确定你不是假设直接访问它们,但你可以很容易地解析这个XML并在节点启动时读取设置。

+0

我很容易被错误的,但我不同意,你不应该访问这些 - Azure云工具附带的API包含Microsoft.WindowsAzure.ServiceRuntime程序集和命名空间。其中,RoleEnvironment类提供了一个用于在运行时访问这些配置值的静态方法。非常适合C#和你有什么,但不适用于Node。 – 2012-08-15 11:38:36

+1

我想他是说你不打算读VM上的XML文件。 (你应该使用API​​。) – smarx 2012-08-15 16:54:42

+1

我认为@smarx对我的想法是正确的。 – 2012-08-15 20:24:09