2012-02-16 204 views
5

我有一个标准的ASP.Net应用程序,我添加了一个Azure部署项目以部署到Azure。该应用部署到Azure罚款。Windows Azure启动任务未触发

然后我想扩展它以启动任务。

添加以下到ServiceDefintion.csdef

<Startup> 
    <Task commandLine="startup.cmd" executionContext="elevated" taskType="simple"/> 
</Startup> 

STARTUP.CMD位于应用程序的bin文件夹。我有记录命令文件,所以我可以看到它没有被执行。

当我将相同的应用程序部署到本地计算机上的计算模拟器时,启动任务将正确执行。

我错过了什么吗?

+0

AppRoot \ Bin可能与Application \ bin文件夹不同。你的应用程序在虚拟目录中吗? – 2012-02-16 15:34:43

+0

文件是否正在部署到Azure盒子上?如果您使用RDP并手动运行它,会发生什么情况? – 2012-02-16 15:49:57

+0

该文件已被部署到Azure,我可以在我将RDP发布到Azure时正常运行。 – keitn 2012-02-17 09:50:42

回答

1

你的“startup.cmd”不只是在你的app BIN文件夹中,而是在根文件夹中,并且标记为“Content”和“Copy to output directory” - >“Always always”。否则,它不会部署到Azure。

另一个需要关注Web应用程序的时刻是,您最有可能应该将bin文件夹也放在启动任务定义中。例如:

<Startup> 
    <Task commandLine="./bin/startup.cmd" executionContext="elevated" taskType="simple"/> 
</Startup> 

希望这会有所帮助。

+0

这绝对是部署。它位于根目录并被标记为内容和始终复制。 – keitn 2012-02-17 09:51:20

+1

使用“./bin/startup.cmd”在发布时给出路径未找到错误。如果我将commandLine中的文件名更改为像startup1.cmd这样的无效文件,那么Azure发布也会抛出一个异常,这向我建议该文件位于正确的位置并且已找到。 – keitn 2012-02-17 10:17:15

+0

我很惊讶这还没有upvoted呢。这是我的解决方案。但是,脚本似乎还没有运行。当我手动运行它时(使用远程桌面),我的脚本的第一行插入了一个奇怪的符号。我不知道它为什么这样做,但我最终只是在.cmd文件的第二行而不是第一行开始我的脚本。完成后,所有功能都正常运行,包括运行自定义脚本的启动任务。 – Ant 2014-07-19 22:19:31

0

晚会晚了一点。

我也遇到了这个问题,对于我来说,我已经将Web角色项目设置为启动项目而不是Azure Cloud Service项目。通过将Azure Cloud Service设置为启动项目,您可以使用Azure模拟器启动项目,启动,运行和停止事件以在Azure环境中工作。