2016-08-01 47 views
3

我有一個Azure雲服務,當應用程序池聯機時(通常爲5-10分鐘),需要進行一些預熱。因此,我喜歡在下班時間安排IIS \ App Pool回收。當我的回收發生在中午時,我得到用戶對我大喊(我不喜歡大吼)安排Azure雲服務上的IIS重置

我一直在做的是遠程處理進入虛擬機,添加一個cmd文件到本地磁盤和創建運行CMD文件中的計劃任務:

net stop "World Wide Web Publishing Service" 
net start "World Wide Web Publishing Service" 

我的問題是,週期性的PaaS服務得到「刷新」,那麼隨機,任何代碼\文件我手動發佈到雲服務VM消失。我需要遠程回到機器並重新添加我的cmd和計劃任務。

我知道雲服務允許你運行啓動任務等。我可以做類似於啓動任務的東西,以便在發佈我的應用程序時打包此cmd文件,但在外部調度這些命令?如果是的話......怎麼樣?

回答

1

啓動任務可能會執行您包含在您的.cspkg中的任何無人值守應用程序/安裝程序。您需要確保cmd文件已正確捆綁(例如,將configureSchedule.cmd添加到項目中,確保將其複製到輸出目錄中)。

既然你試圖建立調度,你可能需要在提升模式下運行cmd

<Startup> 
    <Task commandLine="configureSchedule.cmd" executionContext="elevated" taskType="simple" > 
     <Environment> 
      <Variable name="MyVersionNumber" value="1.0.0.0" /> 
     </Environment> 
    </Task> 
</Startup> 
+0

謝謝@DavidMakogon!我會給這個旗杆跑,但非常感謝 – ewitkows

0

更好的解決辦法是改變應用程序池設置在特定的時間來回收。從像David Makogan這樣的啓動腳本中提到這一點。

到這裏看看: Set default app pool recycling via command line

設置回收時間: https://www.iis.net/configreference/system.applicationhost/applicationpools/add/recycling/periodicrestart

enter image description here

一定要取消選中「常規時間間隔」,否則會出現在回收事件天。

此外,您正在停止WWW服務,更快的方法是隻回收應用程序池。這樣一個新的應用程序池啓動,而舊的應用程序池處理用戶的最後一個請求。所以有(幾乎)沒有連接損失

appcmd recycle apppool /apppool.name: Marketing 
+0

感謝信息@ErikOppedijk。我的問題是,定期VM被「重置」,我做的自定義更改 - 例如手動將文件添加到雲服務VM上的驅動器 - 將消失。所以目前,我需要遠程回到機器並手動重新工作,這正是我試圖避免的。此外,感謝appcmd上的提示,但我的應用程序池名稱始終是隨機生成的,這不幸地導致該解決方案的問題。 – ewitkows

+0

上述腳本必須放置在啓動腳本中,如David提到的。優點是這是本機IIS功能。 –