2012-03-16 88 views
1

我們在.NET 4.0中編寫了許多Web應用程序(使用Visual Studio 2010編寫),這些應用程序已預編譯並部署到生產服務器上。爲.NET Web應用程序部署預編譯的更新?

當前當我們進行更新時,我們用所更新的二進制文件替換所有現有的文件。這會更新應用程序,但它也會重新啓動應用程序,以便所有用戶都必須重新登錄。

部署的二進制文件基本上包含一個用於解決方案中每個項目的.dll文件。

有什麼方法可以在不中斷任何現有用戶的情況下更新Web應用程序?

我知道這樣做是部署源文件的一種方法,並通過他們在飛行中的Web服務器進行編譯,但是這是不是真的對我們來說是可行的選擇。

回答

6

這在具有AppDomainSetup.ShadowCopyFiles屬性的CLR中受支持。打開時,CLR在加載之前製作一個程序集的副本。所以只有副本被鎖定,原稿可以被覆蓋。此功能是爲ASP.NET專門設計的,這是一款輕鬆回收AppDomain的CLR主機。有一個很好的MSDN article關於它,顯示你如何配置它。

+0

非常好,謝謝。因此,這是不是可以簡單地「啓用」在web.config中,它必須在應用程序中進行實際編譯? – cusimar9 2012-03-19 14:41:53

+0

我相信ShadowCopyFiles是默認啓用的。因此,我現在的問題似乎是更新文件時會話丟失。這會導致我的用戶被註銷。這是預期的行爲還是不? – cusimar9 2012-03-21 10:53:10

+2

@ cusimar9 - 如果你的目標是當應用程序被更新,以保持會話,你嘗試過在進程內的StateServer會話模式,而不是?這很容易啓用和使用,無需額外的軟件(如對面SQLServer模式) – avs099 2012-03-23 02:44:03