我的 WebRole 中有两个站点,并定义了一个启动任务。
第一行工作正常,它为我创建了一个新的应用程序池:
%WINDIR%\system32\inetsrv\appcmd.exe add apppool /name:"VCPool" /managedRuntimeVersion:"v4.0" /managedPipelineMode:"Integrated"
现在我想将我的第二个更改为这个新创建的 AppPool,但是之后添加另一行并没有帮助。
%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 运行升高时,它会产生任何安全隐患吗?
<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() 方法中?