2012-05-03 6 views
10

Ich habe versucht, diese zu meinen ServiceDefinition.csdef Datei:Windows Azure: Wie stelle ich eine Konfigurationseinstellung als Umgebungsvariable bereit?

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

Und stelle ich die Konfiguration in meiner ServiceConfiguration.Cloud.cscfg Bildeinstellung:

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

Aber ich bekam die folgende Fehlermeldung, wenn ich run cspack:

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

Diese Frage an sich zu arbeiten, war genug um mich ins Ziel zu bringen, hatte ich eine Antwort eingebaut. +1! –

Antwort

0

Die Konfiguration scheint korrekt zu sein. Es wäre besser, wenn Sie sicherstellen können, dass Sie das neueste SDK verwenden. Die xPath-Funktion ist in Windows Azure SDK 1.5 und höher verfügbar.

Mit freundlichen Grüßen,

Ming Xu.

+0

Ich benutze Version 1.6. –

8

Vermissen Sie die Deklaration dieser Einstellung? Ich sehe nicht das entsprechende Element in Ihrem .csdef, etwas wie <ConfigurationSettings><Setting name="AZURE_STORAGE_ACCOUNT"/></ConfigurationSettings>. Sie benötigen einen von diesen in Ihrem .csdef, und dann möchten Sie immer noch den in Ihrem .cscfg, der den Wert enthält.

Wenn Sie Visual Studio verwenden, sollte es beide Dateien für Sie bearbeiten, wenn Sie seine Eigenschaftsansicht verwenden. (Doppelklicken Sie einfach auf die Rolle und dann auf um die Konfigurationseinstellungen zu ändern und fügen Sie eine neue hinzu.)

-1

Ich habe verschiedene Optionen ausprobiert, die in Blogs erwähnt werden, einschließlich der Einstellung in .cscfg und .csdef. Aber es scheint nicht zu funktionieren. Auch andere XPath-Abfragen wie

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

Arbeit richtig.

Schließlich habe ich herausgefunden, dass der Variablenname verwendet anders war:

In cscfg ich hatte:

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

in csdef Ich hatte:

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

.... ....

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

Changed csdef zu:

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

.... ....

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

Es scheint jetzt richtig

Verwandte Themen