Windows Azure:如何将配置设置公开为环境变量?
我尝试添加这对我ServiceDefinition.csdef中的文件:Windows Azure:如何将配置设置公开为环境变量?
<WorkerRole ...><Runtime><Environment> <Variable name="AZURE_STORAGE_ACCOUNT">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/ConfigurationSettings/ConfigurationSetting[@name='AZURE_STORAGE_ACCOUNT']/@value" />
</Variable>
</Environment></Runtime></WorkerRole>
我设置的配置在我ServiceConfiguration.Cloud.cscfg文件中设置:
<Role name="WorkerRole"> <ConfigurationSettings>
<Setting name="AZURE_STORAGE_ACCOUNT" value="<secret stuff>" />
</ConfigurationSettings>
</Role>
但我得到以下错误,当我运行cspack
:
CloudServices091 : The '/RoleEnvironment/CurrentInstance/Configur ationSettings/ConfigurationSetting[@name='AZURE_STORAGE_ACCOUNT']/@value' is an
invalid xpath expression.
回答:
该配置似乎是正确的。如果你能确保你使用的是最新的SDK,会更好。 xPath功能在Windows Azure SDK 1.5和更高版本中可用。
最好的问候,
Ming Xu。
回答:
您是否错过了该设置的声明?我在.csdef
中看不到相应的元素,例如<ConfigurationSettings><Setting name="AZURE_STORAGE_ACCOUNT"/></ConfigurationSettings>
。您需要.csdef
中的其中一个,然后您仍然需要包含该值的.cscfg
中的那个。
如果您使用Visual Studio,则应使用其属性视图为您编辑这两个文件。 (只需双击该角色,然后单击左键即可配置设置并添加一个新设置。)
回答:
我已经尝试过在博客中提到的不同选项,例如包括.cscfg和.csdef中的设置。但是,它似乎并不奏效。 此外,其他XPath查询像
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/@id"/>
正常工作。
最后,我想通了,使用的变量名是不同的:
在cscfg我:
<Setting name="WFFEPeriodicRestartTime" value="168:00:00" />
在csdef我:
<ConfigurationSettings> <Setting name="PeriodicRestartTime" />
</ConfigurationSettings>
.... ...
<Variable name="PeriodicRestartTime"> <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/ConfigurationSettings/ConfigurationSetting[@name='WFFEPeriodicRestartTime']/@value" />
</Variable>
更改csdef到:
<ConfigurationSettings> <Setting name="WFFEPeriodicRestartTime" />
</ConfigurationSettings>
.... ....
<Variable name="WFFEPeriodicRestartTime"> <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/ConfigurationSettings/ConfigurationSetting[@name='WFFEPeriodicRestartTime']/@value" />
</Variable>
它似乎正常工作,现在
以上是 Windows Azure:如何将配置设置公开为环境变量? 的全部内容, 来源链接: utcz.com/qa/266208.html