我在WebRole中有两个站点并定义了一个启动任务。Azure:如何执行启动任务延迟?
第一行正常工作,它为我创建一个新的应用程序池:
%WINDIR%\system32\inetsrv\appcmd.exe add apppool /name:"VCPool" /managedRuntimeVersion:"v4.0" /managedPipelineMode:"Integrated"
现在,我想我的第二次改变这个新创建的应用程序池,但之后加入另一行,不帮帮我。
%WINDIR%\system32\inetsrv\appcmd.exe set app "WebRole_IN_0_VC/" /applicationPool:"VCPool"
看起来第二个网站还没准备好。
如何将我的任务延迟30秒或稍微延迟appcmd.exe? 除非有一种方法可以为该启动任务创建依赖关系,只有在第二个站点启动并运行时才会执行该依赖关系。
任何帮助将高度赞赏, 非常感谢,
是否有拖延这一执行了30秒,以确保第二的网站投入的方式是可以改变的?
更新:
谢谢你的提示。我对这个问题进行了进一步的调查。我发现了OnStart()事件。
1)但是,由于我使用的是silverlight,只是将现有的Web项目包装在Cloud Roles项目中,所以我没有这样的WebRole.cs。我可以将它添加到我的Silverlight Web项目并在那里使用它吗?还是建议从头开始创建一个WebRole项目,并将其全部替换为Silverlight Web项目?
2)关于服务定义中的<Runtime/>
标签,我是否简单地将它添加为这样?当卷筒纸运行升高时它会有什么安全隐患吗?
<WebRole name="WebRole" enableNativeCodeExecution="true" vmsize="ExtraSmall">
<Runtime executionContext="elevated"/>
<Sites>
<Site name="WebRole" physicalDirectory="./WebRole">
...
</Sites>
</WebRole>
3)最后但并非最不重要我怎么运行CMD文件或事实上此行
%WINDIR%\system32\inetsrv\appcmd.exe set site /site.name:"WebRole_IN_0_VC" /[Path='/'].applicationPool:"ASP.NET v4.0" >>Log.txt
中的OnStart()方法
?
感谢您的答复,所以当我把PowerShell的\ sleep.ps1 2 >> err.out在那里,我必须来填充这一行sleep.ps1:开始 - 睡觉 - 30岁?但问题仍然存在,如果将此任务作为背景执行,并且延迟30秒会有所帮助,如果是在任务执行后创建的... –
Houman
sleep.ps1将包含与延迟相关的代码。即使您将其作为后台任务运行,您也无法确定第二个站点是否已创建完毕。如果Powershell允许类似appcmd.exe的功能。你可以建立一个重试直到使用它的成功机制。 – Chandermani