2012-05-03 34 views
10

Tôi đã cố gắng này thêm vào tập tin ServiceDefinition.csdef tôi:Windows Azure: làm cách nào để hiển thị cài đặt cấu hình dưới dạng biến môi trường?

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

Và tôi thiết lập trong file ServiceConfiguration.Cloud.cscfg của tôi cấu hình:

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

Nhưng tôi đã nhận lỗi sau khi tôi chạy cspack:

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

Câu hỏi này bởi chính nó là đủ để giúp tôi đạt được mục tiêu, có đủ câu trả lời tích hợp sẵn. +1! –

Trả lời

0

Cấu hình có vẻ đúng. Sẽ tốt hơn nếu bạn có thể đảm bảo rằng bạn đang sử dụng SDK mới nhất. Tính năng xPath có sẵn trong Windows Azure SDK 1.5 trở lên.

Trân trọng,

Ming Xu.

+0

Tôi đang sử dụng phiên bản 1.6. –

8

Bạn có thiếu tuyên bố của cài đặt đó không? Tôi không thấy phần tử thích hợp trong số .csdef của bạn, chẳng hạn như <ConfigurationSettings><Setting name="AZURE_STORAGE_ACCOUNT"/></ConfigurationSettings>. Bạn cần một trong số đó trong số .csdef của mình và sau đó bạn vẫn muốn số trong số .cscfg bao gồm giá trị.

Nếu bạn đang sử dụng Visual Studio, nó sẽ chỉnh sửa cả hai tệp cho bạn nếu bạn sử dụng chế độ xem thuộc tính của nó. (Chỉ cần nhấp đúp vào vai trò và sau đó nhấp vào xung quanh để nhận cấu hình cài đặt và thêm cài đặt mới.)

-1

Tôi đã thử các tùy chọn khác nhau được đề cập tại blog, như bao gồm cài đặt trong cả hai .cscfg và .csdef. Nhưng, nó dường như không hoạt động. Ngoài ra, các truy vấn Xpath khác như

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

hoạt động chính xác.

Cuối cùng, tôi đã tìm ra rằng tên biến được sử dụng là khác nhau:

Trong cscfg tôi đã:

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

trong csdef tôi đã:

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

.... ....

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

Thay đổi csdef tới:

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

.... ....

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

Có vẻ như để làm việc một cách chính xác tại

Các vấn đề liên quan