2015年9月1日 星期二

SharePoint How to avoid restart Application pools when use Update-SPSolution (SharePoint 使用Update-SPSolution時避免啟動Application pools on IIS)

開發好的SP客製化專案(以WebPart為例來說),封裝完成為WSP,在SharePoint部署上去之後,假設需要更新的話,可以使用Update-SPSolution 指令來進行WebPart的更新,指令參考如下:

Update-SPSolution -Identity MyWP.wsp -LiteralPath D:\MyWP.wsp –GACDeployment

但是此時會遇到一個問題,假設我們一開始是把此WebPart部署到SharePoint-80這一個WebApplication,但是當執行Update-SPSolution時,系統並不會只是單純的SharePoint-80單一Web Application Restart,而是會預設將此Server上所有的Application Pool全部進行:停止—>啟用,如下圖所示:

image

原因是因為所有預設開發專案並且封裝WSP時,有一個封裝屬性:ResetWebServerModeOnUpgrade預設值是:StartStop,此時將會影響所有此Server上的Web Application連帶影響其他的應用程式!

那麼該如何來解決執行Update-SPSolution時避免去重新啟動所有的Application Pool呢? 執行步驟如下:

1. 開啟客製化的專案,開啟專案中的Package.Template.xml

image

2. 設定以下三個屬性值:ResetWebServer="FALSE" 、ResetWebServerModeOnUpgrade="Recycle" 、DeploymentServerType="WebFrontEnd",如下圖所示:

image

3. 此時重新打包封裝,並且針對更新後的WSP進行部署!

Update-SPSolution -Identity MyWP.wsp -LiteralPath D:\MyWP.wsp –GACDeployment

此時就可以IIS檢視,可以發現執行Update-SPSolution並不會將Application Pool停止了! Good!

image

 

參考資料:

https://msdn.microsoft.com/en-us/library/ms412929.aspx
http://blog.mastykarz.nl/optimizing-deploying-sharepoint-packages-minimize-impact-farm-availability/

沒有留言: