Microsoft Azure启动任务未执行

时间:2014-05-16 13:08:44

标签: azure startup azure-web-roles

我的Web项目的根目录中有一个简单的文件(与Web worker角色绑定)。该文件名为Startup.cmd。该文件包含以下行:dir > directory.txt。当我从命令行运行它时,它会正确执行,并将目录内容列表输出到您期望的名为directory.txt的文件。同样,行ECHO Write this line to file > output.txt似乎也不起作用。

在我的Azure Cloud Service项目的ServiceDefinition.csdef内,我有以下几行:

<WebRole name="Website" vmsize="Small">
    <Startup>
        <Task commandLine="Startup.cmd" executionContext="elevated" taskType="simple"></Task>
    </Startup>
    ....
</WebRole>

我相信它正在查找文件,因为我尝试更改路径,它会抛出一个无法找到它的构建错误。问题是当我在调试Azure调试环境后检查我的/bin/目录时,我看到Startup.cmd(我已将其设置为Copy always),但我看不到{{1} }。我不确定另一种确认它是否正确执行的方法。

1 个答案:

答案 0 :(得分:0)

我发现以下MSDN文章很有用:http://msdn.microsoft.com/en-us/library/hh180155.aspx

结果,我对Startup.cmd文件进行了一些更改。我将命令更改为:

ECHO The current version is %MyVersionNumber% >> "%TEMP%\StartupLog.txt" 2>&1
EXIT /B 0

但是,这似乎没有将输出放在我的系统临时目录中:C:\Users\username\AppData\Local\Temp。我想假设这是因为Azure Compute Emulator使用了我不知道的不同临时目录。

我将Startup.cmd更改为:

ECHO The current version is %MyVersionNumber% >> "c:\temp\StartupLog.txt" 2>&1
EXIT /B 0

并将我的配置更新为:

<WebRole name="Website" vmsize="Small">
  <Startup>
      <Task commandLine="Startup.cmd" executionContext="elevated" taskType="simple">
          <Environment>
              <Variable name="MyVersionNumber" value="1.0.0.0" />
              <Variable name="ComputeEmulatorRunning">
                  <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
              </Variable>
          </Environment>
      </Task>
  </Startup>
  ...
</WebRole>

这似乎在启动调试器时将文件写入C:\temp\