Windows-Server-2008-R2

AppPool Recycle 後在單個 IIS 網站下重新載入多個應用程序的簡單方法?

  • July 9, 2012

我不知道從哪裡開始,即使我的想法是正確的。希望這裡有人能告訴我該怎麼做,或者至少給我一個開始旅行的方向。

我在一個包含多個 MVC3 和 Coldfusion 應用程序的 Intranet 網站上工作。我已將 AppPool 設置為每天凌晨 2:00 回收。現在,我想創建一個計劃任務來重新載入該 IIS 網站下包含的每個應用程序,這樣當第一個使用者早上進來時,他們不必等待 30 秒到 2 分鐘來將他們的應用程序重新載入到IIS 應用程序池。

有沒有容易做到這一點?在我看來,我唯一的選擇是:

  • 編寫一個 bash 腳本,手動插入每個網站進行載入
  • 編寫一個程序,試圖找到每個應用程序並載入它們

現在,如果這些是我唯一的選擇,是否有可以利用的 .NET 庫讓我輕鬆找到 IIS 下的 MVC3 應用程序?

使用應用程序初始化模組來做到這一點: http ://www.iis.net/download/ApplicationInitialization

這個模組有一個舊版本,但這是新重寫的版本。它仍在 CTP 中,但看起來相當穩定。

此外,此模組似乎預設包含在 Server 2012 和 IIS8 中

我們通常會創建一個計劃任務,每隔幾分鐘執行一次 wget 來執行初始載入。這可以從任何電腦上執行。IIS 7 有一個“熱身”功能,但我真的不明白它比使用 wget 更簡單。

wget.exe --quiet --secure-protocol=SSLv3 --no-check-certificate sitename.domainname.com  

另請注意,如果您的網站沒有預編譯,使用者仍然會為每個尚未編譯的頁面產生延遲。最好的辦法是在建構過程中使用 aspnet_compiler.exe 為您執行此操作。

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe" -f ^  
-v "/" -p "%~dp0..\..\SourceWebSiteFolder" ^  
-d -fixednames "%~dp0..\..\PublishedWebSiteFolder"  

引用自:https://serverfault.com/questions/406051