[IIS]IIS停機更新系統作法分享

[ASP.NET]ASP.NET停機更新系統作法分享

前言

同事說他需要停機更新程式,更新完程式後,需要先在Server上測試OK之後才會開放給User使用!

實作

直覺想到就是以限制IP來處理,只允許本機來存取,然後再設定客製的403錯誤碼頁面,因IIS6與IIS7做法不同,以下分別說明。

IIS7

1.設定登入Web AP,限制所有的IP都不能存取。

image

image

image

以上設定完成後,連到Web AP登入頁就會有403的錯誤,如下。

image

 

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來修改也可以,如下,

image

image

當然您也可以重新導到其他的Page去!

接上來Client連線過去看,就可看到我們自定的停機訊息了,如下,

image

以上是透過Client去看哦!

如果您要在Server端也看到該訊息的話,請在applicationHost.config中的httpErrors多設定 errorMode="Custom" 。

 

4.設定登入Web AP,新增127.0.0.1的IP可以存取。

image

image

image

接下來,就可以在Server端測試系統,而不用怕User會連進來,等到後更新測試完成後,再把限制所有IP都不能存取的設定取消,User就可以使用了!

 

IIS6

1.設定登入Web AP,限制所有的IP都不能存取,除了127.0.0.1。

image

 

2.修改403;6錯誤網頁為我們的停機頁面。

image

 

接下來,就可以在Server端測試系統,而不用怕User會連進來,等到後更新測試完成後,再把限制所有IP都不能存取的設定取消,再移除127.0.0.1的設定。

 

結論

在Asp.NET Web AP的目錄下放罝app_offline.htm,就會自動Render該頁出來,可在停機時使用。

但是如果是要大多數人不能使用,而在某些機器能使用,就可使用這種方式。

如果大家有更好的想法,請跟小弟分享,謝謝!

 

參考資料

IIS 7.5 updates to custom errors and compression

HTTP Errors <httpErrors>

ApplicationHost.config 簡介

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^