2016-10-11 95 views
6

是否可以將ASP.NET(核心)應用程序發佈到IIS 8上的運行站點,而無需手動停止並啓動網站?IIS 8發佈ASP.NET核心應用程序 - 正在使用的文件

Visual Studio 2015持續提供文件正在使用的錯誤。我正在使用發佈到文件系統,因爲我的網絡部署到我們網絡中的服務器時出現錯誤,無法在端口443的服務器上進行身份驗證。

我不介意IIS必須回收應用程序池,但是當我經常不得不關閉應用程序時,發佈(需要大約一分鐘)並重新啓動它,這對用戶來說並不好。

另一種選擇就像2個網站運行相同的應用程序,但只有這是可自動化的。然後它會放下2箇中的1個,更新這個,放下它,放下第二個,更新它並啓動它。

第三種選擇就像熱更新,我可以在應用程序開啓時更新應用程序。

任何人都可以指向正確的方向(也許是一些博客文章),因爲我的Google搜索沒有給我任何好的信息?

回答

0

您提到「運行同一應用程序的兩個網站」。你的意思是兩個Web服務器託管相同的應用程序?

如果您已經擁有多個Web服務器(也稱爲服務器羣或Web羣),您可以簡單地將一些服務器從羣集中取出並更新它們。這就是我們如何推出我們的更新。我們使用Citrix提供的軟件來管理服務器場。它還處理負載平衡。這種類型的軟件允許監視服務器,因此您可以確定所有用戶何時從Web服務器「移出」(最近從集羣中移出)。然後,您可以iisreset,部署新版本,然後轉到下一臺服務器(或一組服務器,具體取決於您的配置)。我們有超過20個虛擬Web服務器。通常,我們會取下一半服務器,更新它們,並在將上半部分放回羣集/服務器場時將另一半服務器關閉。這應該允許不間斷的服務。我明白你想讓這個過程自動化。我假設你正在使用Windows NLB(網絡負載平衡)。你可以編寫一個PowerShell腳本來自動關閉服務器。這裏有一個參考: https://technet.microsoft.com/en-us/library/ee817138

我知道這可能被視爲一種解決方法。我不確定在ASP.NET Core中是否需要回收應用程序池。我無法找到明確的答案。無論如何,大多數生產應用程序應該位於多個Web服務器上。即使你沒有很多用戶,你也應該有多個Web服務器來實現故障轉移。

1

如果將名爲app_offline.htm的文件複製到應用程序文件夾,IIS將優雅地停止應用程序並開始提供app_offline.htm文件的內容。當應用程序停止時,您可以複製您的文件。複製文件後,請刪除app_offline.htm文件,IIS將啓動您的應用程序。 VS在部署到Azure時爲你做,但在部署到文件系統時不會。

相關問題