我在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