Azure Cloud Service不会将运行时环境变量传递给启动任务

时间:2016-02-24 07:53:41

标签: azure cmd environment-variables startup azure-cloud-services

我创建了一个包含多个启动任务的云服务定义。我有一组通用的环境变量,我想从每个任务中获取,例如,如果它在模拟器中运行。为此,我使用了以下文档: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提供的示例相同,但它不起作用。我的定义是否犯了错误,或者我错过了什么?

0 个答案:

没有答案