開發好的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全部進行:停止—>啟用,如下圖所示:
原因是因為所有預設開發專案並且封裝WSP時,有一個封裝屬性:ResetWebServerModeOnUpgrade預設值是:StartStop,此時將會影響所有此Server上的Web Application連帶影響其他的應用程式!
那麼該如何來解決執行Update-SPSolution時避免去重新啟動所有的Application Pool呢? 執行步驟如下:
1. 開啟客製化的專案,開啟專案中的Package.Template.xml
2. 設定以下三個屬性值:ResetWebServer="FALSE" 、ResetWebServerModeOnUpgrade="Recycle" 、DeploymentServerType="WebFrontEnd",如下圖所示:
3. 此時重新打包封裝,並且針對更新後的WSP進行部署!
Update-SPSolution -Identity MyWP.wsp -LiteralPath D:\MyWP.wsp –GACDeployment
此時就可以IIS檢視,可以發現執行Update-SPSolution並不會將Application Pool停止了! Good!
參考資料:
https://msdn.microsoft.com/en-us/library/ms412929.aspx
http://blog.mastykarz.nl/optimizing-deploying-sharepoint-packages-minimize-impact-farm-availability/
沒有留言:
張貼留言