我创建了一个包含多个启动任务的云服务定义。我有一组通用的环境变量,我想从每个任务中获取,例如,如果它在模拟器中运行。为此,我使用了以下文档:https://azure.microsoft.com/nl-nl/documentation/articles/cloud-services-startup-tasks-common/#differentiate-between-running-in-the-emulator-and-the-cloud
问题是我没有从传递给我的任务的运行时块中获得任何变量。在任务级别声明的任何变量都会正常传递。
我的定义如下:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="Portal.CloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WebRole name="Portal" vmsize="Small">
...
<LocalResources>
<LocalStorage name="StartupLog" sizeInMB="100" cleanOnRoleRecycle="false"/>
</LocalResources>
<Runtime>
<Environment>
<Variable name="ComputeEmulatorRunning">
<RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
</Variable>
<Variable name="CurrentEnvironment">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/ConfigurationSettings/ConfigurationSetting[@name='Environment']/@value" />
</Variable>
<Variable name="StartupLogPath">
<RoleInstanceValue xpath="/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='StartupLog']/@path" />
</Variable>
<Variable name="testvar" value="test"/>
</Environment>
</Runtime>
<Startup>
<Task commandLine="AddCertToTrustedRootCA.cmd" executionContext="elevated" taskType="simple" />
<Task commandLine="ConfigureIIS.cmd" executionContext="elevated" taskType="simple">
<Environment>
<Variable name="taskvar" value="test"/>
</Environment>
</Task>
</Startup>
...
</WebRole>
</ServiceDefinition>
我此刻正在调试ConfigureIIS.cmd
。我得到了%taskvar%
- 在任务级别定义的变量,但运行时变量%testvar%
不可用,就像所有其他运行时环境变量一样。
到目前为止我尝试过:
%testvar%
)并删除RoleInstanceValue
变量<Runtime>
- 元素设置为<Runtime executionContext="elevated">
以匹配任务执行级别executionContext
据我所知,我的代码与Microsoft提供的示例相同,但它不起作用。我的定义是否犯了错误,或者我错过了什么?