2012-05-03 25 views
10

He intentado añadir esto a mi archivo ServiceDefinition.csdef:Windows Azure: ¿cómo expongo una configuración de configuración como una variable de entorno?

<WorkerRole ...><Runtime><Environment> 
    <Variable name="AZURE_STORAGE_ACCOUNT"> 
     <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/ConfigurationSettings/ConfigurationSetting[@name='AZURE_STORAGE_ACCOUNT']/@value" /> 
    </Variable> 
</Environment></Runtime></WorkerRole> 

Y establecer la configuración en mi archivo ServiceConfiguration.Cloud.cscfg la configuración:

<Role name="WorkerRole"> 
    <ConfigurationSettings> 
    <Setting name="AZURE_STORAGE_ACCOUNT" value="<secret stuff>" /> 
    </ConfigurationSettings> 
</Role> 

pero me dio la siguiente error cuando ejecutar cspack:

CloudServices091 : The '/RoleEnvironment/CurrentInstance/Configur 
ationSettings/ConfigurationSetting[@name='AZURE_STORAGE_ACCOUNT']/@value' is an 
invalid xpath expression. 
+2

Esta pregunta por sí era lo suficientemente para llegar al objetivo, tenía suficiente de una respuesta integrada. +1! –

Respuesta

0

La configuración parece ser correcta. Sería mejor si puede asegurarse de estar utilizando el último SDK. La función xPath está disponible en Windows Azure SDK 1.5 y versiones posteriores.

Saludos cordiales,

Ming Xu.

+0

Estoy usando la versión 1.6. –

8

¿Echas de menos la declaración de esa configuración? No veo el elemento apropiado en su .csdef, algo así como <ConfigurationSettings><Setting name="AZURE_STORAGE_ACCOUNT"/></ConfigurationSettings>. Necesita uno de esos en su .csdef, y luego aún quiere el de su .cscfg que incluye el valor.

Si está usando Visual Studio, debería editar ambos archivos si usa su vista de propiedades. (Simplemente haga doble clic en la función y luego haga clic para acceder a la configuración y agregue una nueva.)

-1

He probado diferentes opciones mencionadas en blogs, como incluir la configuración en .cscfg y .csdef. Pero, parece que no funciona. Además, otra consulta XPath como

 <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/@id"/> 

trabajo correctamente.

Por último, me di cuenta de que el nombre de la variable utilizada fue diferente:

En cscfg tuve:

<Setting name="WFFEPeriodicRestartTime" value="168:00:00" /> 

en csdef que tenía:

<ConfigurationSettings> 
     <Setting name="PeriodicRestartTime" /> 
    </ConfigurationSettings> 

.... ....

<Variable name="PeriodicRestartTime"> 
      <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/ConfigurationSettings/ConfigurationSetting[@name='WFFEPeriodicRestartTime']/@value" /> 
    </Variable> 

csdef cambiado a:

<ConfigurationSettings> 
     <Setting name="WFFEPeriodicRestartTime" /> 
    </ConfigurationSettings> 

.... ....

<Variable name="WFFEPeriodicRestartTime"> 
      <RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/ConfigurationSettings/ConfigurationSetting[@name='WFFEPeriodicRestartTime']/@value" /> 
      </Variable> 

Parece que funciona correctamente ahora

Cuestiones relacionadas