[ASP.NET]ASP.NET停機更新系統作法分享
前言
同事說他需要停機更新程式,更新完程式後,需要先在Server上測試OK之後才會開放給User使用!
實作
直覺想到就是以限制IP來處理,只允許本機來存取,然後再設定客製的403錯誤碼頁面,因IIS6與IIS7做法不同,以下分別說明。
IIS7
1.設定登入Web AP,限制所有的IP都不能存取。
以上設定完成後,連到Web AP登入頁就會有403的錯誤,如下。
2.修改C:\Windows\System32\inetsrv\config\applicationHost 允許使用絕對路徑。
開啟applicationHost,找到httpErrors Tag,加入allowAbsolutePathsWhenDelegated="true"的屬性,如下,
<httpErrors allowAbsolutePathsWhenDelegated="true" lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath" >
…
</httpErrors>
3.修改Web AP的Web.config,403錯誤網頁為我們的停機頁面,如下。
<httpErrors >
<remove statusCode="403" subStatusCode="-1" />
<error statusCode="403" prefixLanguageFilePath="" path="C:\inetpub\wwwroot\403.htm" />
</httpErrors>或是透過IIS來修改也可以,如下,
當然您也可以重新導到其他的Page去!
接上來Client連線過去看,就可看到我們自定的停機訊息了,如下,
以上是透過Client去看哦!
如果您要在Server端也看到該訊息的話,請在applicationHost.config中的httpErrors多設定 errorMode="Custom" 。
4.設定登入Web AP,新增127.0.0.1的IP可以存取。
接下來,就可以在Server端測試系統,而不用怕User會連進來,等到後更新測試完成後,再把限制所有IP都不能存取的設定取消,User就可以使用了!
IIS6
1.設定登入Web AP,限制所有的IP都不能存取,除了127.0.0.1。
2.修改403;6錯誤網頁為我們的停機頁面。
接下來,就可以在Server端測試系統,而不用怕User會連進來,等到後更新測試完成後,再把限制所有IP都不能存取的設定取消,再移除127.0.0.1的設定。
結論
在Asp.NET Web AP的目錄下放罝app_offline.htm,就會自動Render該頁出來,可在停機時使用。
但是如果是要大多數人不能使用,而在某些機器能使用,就可使用這種方式。
如果大家有更好的想法,請跟小弟分享,謝謝!
參考資料
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^