2011-02-01 104 views
7

我有一個ASP.NET網站,我將不得不採取一些重大的結構更新,我想知道如何從客戶端的角度去做。我聽說過一個App_Offline.htm文件或類似的東西,但我從來沒有真正得到這個成功的工作。有誰知道如何做到這一點?如何維護.NET網站?

編輯

我的應用程序正在運行ASP.NET 4.0,它是什麼值得。

回答

14

與其解釋app_offline的惡意(除其他原因,你不能繼續在執行維護時在內部看到該站點),我在IIS中創建了一個額外的「維護」通常停止。它具有與主站點相同的IP,主機標題等,但只有default.aspx,圖像文件夾和樣式表。該文件包含「此站點將關閉以進行維護,直到xx:xx PM CST」消息。

當我準備好執行更新,我停止主網站,並開始維修站點,然後處理接收到的任何請求,當然,返回維修信息。

當維修完成後,停止維護預留​​網站,並重新啓動你的主站點。

如果您使用主機頭,你可以這樣,雖然維護網站正在處理外部請求的網站仍然在你的局域網/廣域網內部訪問修改這一做法。一種簡單的方法是在啓動維護站點之前,從主站點刪除<*>.yourdomain.com的主機頭文件,並確保主站點具有內部可訪問的其他主機頭文件(例如添加到本地主機文件中)。當您啓動維護站點時,它將處理外部請求,而主站點將處理對僅內部標頭的請求。

或者(這看起來複雜,但可以節省您的添加和刪除頭的麻煩),創建三個站點:

  1. 主要網站:配置爲正常運行。
  2. 維護站點:與主站點具有相同的IP,主機標題等,但只包含默認的「維護下載」頁面以及所需的任何圖像,C​​SS等。
  3. 內部測試網站:複製主站點的配置並指向相同的文件夾,但僅具有主機標頭等,用於不在公用DNS中的內部名稱。

這樣,您只需要停止主站點並啓動另外兩個站點,以便將外部流量彙集到「停機維護」站點,同時仍然可以查看和調整主站點。這對於在部署過程中傾向於出現的最後幾分鐘的測試/錯誤修復很有幫助。

更新

如果您沒有訪問服務器或IIS管理器中,你最有可能將無法使用任何。假設您的訪問權限限於您自己的文件夾,您的選擇似乎要麼將app_offline.htm部署到該網站的根目錄(ASP.NET將檢查該文件名),要麼只是將整個網站替換爲「停機維護」應用程序。也許別人會用替代品加入。

+0

這是一個很好的答案,但如果你真的沒有服務器訪問(在共享服務器上託管)呢? – Jason 2011-02-01 21:19:13

0

如果您有一個良好的預發佈測試流程和仔細的發佈程序,您可能不會長時間停機。

在這種情況下,將名爲App_Offline.htm的文件放入您的網站根目錄可以正常工作。 IIS將用它替換你的網站,直到你刪除它。這是一個無痛的方式,確保您在轉換時沒有任何更新。

礦只是有一個標題與網站標誌和一條消息,我們將停機維護長達二十分鐘。而已。我花了大約五分鐘來寫IIRC。

我肯定會推薦這短暫的不到半小時的急劇下降期。任何更長的時間,你可能正在尋找一個重要的系統變化,像David Lively的方法。