我有一個具有MVC4角色的Azure項目,其中我添加了Visual C++ 2012 Runtime Library安裝文件以及一個用於以靜默方式安裝它的腳本。Azure啓動任務掛起
該腳本和庫安裝的功能,唯一的問題是,任務無法完成,安裝過程永遠不會退出,然後阻止從開始的角色:我使用遠程連接到服務器
桌面,並通過查看任務管理器,我可以看到進程vcredist_x64.exe:(他們實際上是2,但我認爲這是正常的)
當我用鼠標右鍵單擊並終止進程,部署成功完成,角色啓動。
這是當我啓動任務設置爲簡單在ServiceDefinition.csdef中,因爲這使服務器等到任務完成後啓動角色的問題。所以我所做的就是將任務設置爲背景,所以啓動腳本不會阻止角色再次啓動,但即使如此,該過程仍在後臺運行,必須手動終止。
這個腳本應該工作,並與2010年的VC++庫有前(如果沒有退出,雖然,但應該是有,以避免阻塞的作用,如果腳本返回錯誤代碼):
vcredist_x64.exe /quiet /norestart
EXIT /B 0
沒有工作,所以我想我會在安裝後手動殺死進程:
vcredist_x64.exe /quiet /norestart
TASKKILL /F /T /IM vcredist_x64.exe
EXIT /B 0
沒有工作,進程還活着。如果我自己在服務器上手動運行腳本,或者在本地執行腳本,但是Azure嘗試在部署過程中嘗試執行腳本時,腳本會掛起。
我做起,建立任務的定義如下ServiceDefinition.csdef中:
<Startup>
<Task commandLine="InstallVcRedist.cmd" executionContext="elevated" taskType="background" />
</Startup>
在C:\Resources\temp\{RoleId.RoleName}\RoleTemp
日誌說一切正常。
我可以避免通過將啓動任務設置爲背景而不是簡單地阻止角色被阻止,但這並不能真正解決問題。謝謝。
您是否嘗試過從RDP手動運行(沒有/ quiet)?怎麼了?有錯誤嗎? – smarx
我剛剛得到可以修復,卸載或關閉的對話框。只有當Azure在部署時嘗試運行它時,此過程纔會掛起,我會在此處嘗試一些更多的事情,看看會發生什麼。 –
如果你用/ quiet運行它,我認爲它成功完成了?您可能想嘗試使用psexec作爲本地系統用戶運行。請參閱http://blog.smarx.com/posts/windows-azure-startup-tasks-tips-tricks-and-gotchas。 – smarx