使用 FTP 用戶端部署您的網站 (C#)

作者 :Scott Mitchell

下載 PDF

部署 ASP.NET 應用程式最簡單的方式,就是手動將必要的檔案從開發環境複製到生產環境。 本教學課程說明如何使用 FTP 用戶端,將檔案從桌面取得至 Web 主機提供者。

簡介

上一個教學課程引進了簡單的 Book Review ASP.NET Web 應用程式,其中包含幾個 ASP.NET 網頁、主版頁面、自訂基 Page 類、一些影像,以及三個 CSS 樣式表單。 我們現在已準備好將此應用程式部署至 Web 主機提供者,此時應用程式將可供具有網際網路連線的任何人存取!

從決定需要 部署哪些檔案 教學課程的討論中,我們知道哪些檔案需要複製到 Web 主機提供者。 (回想一下,要複製哪些檔案取決於您的應用程式是明確還是自動編譯。) 但如何從開發環境取得檔案, (桌面) 到生產環境, (Web 主機提供者所管理的 Web 服務器) ? F ile T ransfer P rotocol (FTP) 是常用的通訊協定,可用來透過網路將檔案從一部電腦複製到另一部電腦。 另一個選項是 FrontPage Server Extensions (FPSE) 。 本教學課程著重于使用獨立 FTP 用戶端軟體,將必要的檔案從開發環境部署到生產環境。

注意

Visual Studio 包含透過 FTP 發佈網站的工具;這些工具以及使用 FPSE 的工具,也會在下一個教學課程中討論。

若要使用 FTP 複製檔案,我們需要開發環境中的 FTP 用戶端 。 FTP 用戶端是一種應用程式,其設計目的是將檔案從安裝的電腦複製到執行 FTP 伺服器的電腦。 (如果您的 Web 主機提供者支援透過 FTP 進行檔案傳輸,則在其網頁伺服器上執行 FTP 伺服器。) 有許多可用的 FTP 用戶端應用程式。 您的網頁瀏覽器甚至可以以 FTP 用戶端的身分加倍。 我的最愛 FTP 用戶端,以及我在本教學課程中將使用的 FTP 用戶端,是 FileZilla,這是適用于 Windows、Linux 和 Mac 的免費開放原始碼 FTP 用戶端。 不過,任何 FTP 用戶端都會運作,因此您可以隨意使用您最熟悉的任何用戶端。

如果您遵循下列步驟,您必須先建立 Web 主機提供者的帳戶,才能完成本教學課程或後續的帳戶。 如上一個教學課程所述,有一家具有各種價格、功能和服務品質的 Web 主機提供者公司。 在本教學課程系列中,我將使用 Discount ASP.NET 作為 Web 主機提供者,但只要支援網站開發所在的 ASP.NET 版本,您就可以跟著任何 Web 主機提供者一起執行。 (這些教學課程是使用 ASP.NET 3.5.) 建立的,因為我們將在本教學課程中使用 FTP 將檔案複製到 Web 主機提供者,而且未來一定要讓您的 Web 主機提供者支援對其網頁伺服器的 FTP 存取。 幾乎所有 Web 主機提供者都提供這項功能,但您應該在註冊之前再次檢查。

部署 Book Review Web 應用程式專案

回想一下,Book Review Web 應用程式有兩個版本:一個是使用 Web 應用程式專案模型實作, (BookReviewsWAP) ,另一個是使用 BookReviewsWSP) 的網站專案 (模型。 專案類型會影響月臺是自動或明確編譯,而且該編譯模型會決定需要部署哪些檔案。 因此,我們會從 BookReviewsWAP 開始,分別檢查如何部署 BookReviewsWAP 和 BookReviewsWSP 專案。 如果您尚未下載這兩個 ASP.NET 應用程式,請花一點時間下載。

流覽至 BookReviewsWAP 資料夾並按兩下 BookReviewsWAP.sln 檔案,以啟動 BookReviewsWAP 專案。 部署專案之前,請務必先建置它,以確保已編譯的元件中包含原始程式碼的任何變更。 若要建置專案,請移至 [建置] 功能表,然後選擇 [建置 BookReviewsWAP] 功能表選項。 這會將專案中的原始程式碼編譯成位於 資料夾中的單一元件 BookReviewsWAP.dllBin

我們現在已準備好部署必要的檔案! 啟動 FTP 用戶端,並聯機到 Web 主機提供者上的 Web 服務器。 (當您向 Web 主控公司註冊時,他們會傳送電子郵件給您有關如何連線到 FTP 伺服器的資訊;這包括 FTP 伺服器的位址,以及使用者名稱和密碼。)

將下列檔案從桌面複製到 Web 主機提供者的根網站資料夾。 當您在 Web 主機提供者將 FTP 傳送到 Web 服務器時,您可能位於根網站目錄。 不過,某些 Web 主機提供者有名為 wwwwwwroot 的子資料夾,可作為網站檔案的根資料夾。 最後,當 FTPing 檔案時,您可能需要在生產環境上建立對應的資料夾結構 - Bin 資料夾、 Fiction 資料夾、 Images 資料夾等等。

  • ~/Default.aspx
  • ~/About.aspx
  • ~/Site.master
  • ~/Web.config
  • ~/Web.sitemap
  • 資料夾的完整內容 Styles
  • 資料夾的完整內容 Images (及其子資料夾, BookCovers)
  • ~/Fiction/Default.aspx
  • ~/Fiction/Blaze.aspx
  • ~/Tech/Default.aspx
  • ~/Tech/CYOW.aspx
  • ~/Tech/TYASP35.aspx
  • ~/Bin/BookReviewsWAP.dll

圖 1 顯示覆制必要檔案之後的 FileZilla。 FileZilla 會顯示左側本機電腦上的檔案,以及右側遠端電腦上的檔案。 如圖 1 所示,ASP.NET 原始程式碼檔案 About.aspx.cs 位於本機電腦上, (開發環境) ,但未複製到生產環境 (Web 主機提供者) ,因為使用明確編譯時不需要部署程式碼檔案。

注意

在生產伺服器上擁有原始程式碼檔案不會造成損害,因為它們會被忽略。 ASP.NET 預設禁止對原始程式碼檔案提出 HTTP 要求,如此一來,即使原始程式碼檔案存在於生產伺服器上,訪客也無法存取您的網站。 (也就是說,如果使用者嘗試造訪 http://www.yoursite.com/Default.aspx.cs ,他們會收到錯誤頁面,說明這些類型的檔案 - .cs 檔案 - 禁止。)

FileZilla FTP 用戶端的螢幕擷取畫面,其中顯示某些 ASP 點 Net 原始程式碼檔案未複製到遠端伺服器。

圖 1:使用 FTP 用戶端將必要的檔案從桌面複製到 Web 主機提供者上的網頁伺服器, (按一下即可檢視完整大小的映射)

部署您的網站之後,請花點時間測試月臺。 如果您已購買功能變數名稱並正確設定 DNS 設定,您可以輸入功能變數名稱來流覽您的網站。 或者,您的 Web 主機提供者應該已提供您網站的 URL,其看起來會像 accountname一樣。webhostprovider.comwebhostprovider.com/accountname。 例如,折扣 ASP.NET 帳戶的 URL 是: http://httpruntime.web703.discountasp.net

圖 2 顯示已部署的書籍評論網站。 請注意,我正在折扣 ASP 上檢視它。NET 的伺服器位於 http://httpruntime.web703.discountasp.net 。 此時,任何連線到網際網路的人都可以檢視我的網站! 如我們所預期,網站的外觀和行為就像在開發環境中測試時所做的一樣。

注意

如果您在檢視應用程式時收到錯誤,請花一點時間確定您已部署正確的檔案集。 接下來,請檢查錯誤訊息,以查看它是否顯示問題的任何線索。 接著,您可以轉向 Web 主機公司的技術服務人員,或將問題張貼到 ASP.NET 論壇的適當論壇。

「書籍評論」網站現在可供具有網際網路連線的任何人存取

圖 2:[書籍評論網站] 現在可供具有網際網路連線的任何人存取, (按一下即可檢視完整大小的影像)

部署書籍檢閱網站專案

部署使用自動編譯的 ASP.NET 應用程式時,例如 BookReviewsWSP 網站專案,資料夾中沒有已編譯的 Bin 元件。 因此,Web 應用程式的原始程式碼檔案必須部署到生產環境。 讓我們逐步解說此程式。

如同 Web 應用程式專案,在部署應用程式之前,最好先建置應用程式。 建置網站專案不會建立元件時,它會檢查頁面上是否有任何編譯時期錯誤。 最好現在尋找這些錯誤,而不是讓您的網站訪客為您探索這些錯誤!

成功建置專案之後,請使用 FTP 用戶端將下列檔案複製到 Web 主機提供者的根網站資料夾。 您可能需要在生產環境上建立對應的資料夾結構。

注意

如果您已部署 BookReviewsWAP 專案,但仍想要嘗試部署 BookReviewsWSP 專案,請先刪除部署 BookReviewsWAP 時上傳的網頁伺服器上上傳的所有檔案,然後部署 BookReviewsWSP 的檔案。

  • ~/Default.aspx
  • ~/Default.aspx.cs
  • ~/About.aspx
  • ~/About.aspx.cs
  • ~/Site.master
  • ~/Site.master.cs
  • ~/Web.config
  • ~/Web.sitemap
  • 資料夾的完整內容 Styles
  • 資料夾的完整內容 Images (及其子資料夾, BookCovers)
  • ~/App_Code/BasePage.cs
  • ~/Fiction/Default.aspx
  • ~/Fiction/Default.aspx.cs
  • ~/Fiction/Blaze.aspx
  • ~/Fiction/Blaze.aspx.cs
  • ~/Tech/Default.aspx
  • ~/Tech/Default.aspx.cs
  • ~/Tech/CYOW.aspx
  • ~/Tech/CYOW.aspx.cs
  • ~/Tech/TYASP35.aspx
  • ~/Tech/TYASP35.aspx.cs

圖 3 顯示覆制必要檔案之後的 FileZilla。 如您所見,ASP.NET 原始程式碼檔案 About.aspx.cs 會出現在本機電腦上, (開發環境) 和 Web 主機提供者 (生產環境) ,因為使用自動編譯時必須部署程式碼檔案。

FileZilla FTP 用戶端視窗的螢幕擷取畫面,其中顯示已成功上傳至伺服器的 ASP 點 Net 原始程式碼檔案。

圖 3:使用 FTP 用戶端將必要的檔案從桌面複製到 Web 主機提供者上的網頁伺服器, (按一下即可檢視完整大小的映射)

使用者體驗不會受到應用程式的編譯模型影響。 相同的 ASP.NET 網頁可供存取,無論網站是使用 Web 應用程式專案模型還是網站專案模型來建立,其外觀和行為都相同。

更新生產環境上的 Web 應用程式

Web 應用程式開發和部署不是一次性程式。 例如,在建立書籍檢閱網站時,我建立了各種頁面,並在個人電腦上撰寫隨附的程式碼, (開發環境) 。 到達特定穩定狀態之後,我已部署應用程式,讓其他人可以流覽網站並閱讀我的評論。 但部署不會標示在此網站上開發結束時。 我可以新增更多書籍評論或實作新功能,例如允許我的訪客為書籍評分或留下自己的評論。 這類增強功能會在開發環境中開發,而且完成時需要部署。 因此,開發和部署是迴圈的。 您開發應用程式,然後加以部署。 雖然網站是即時且在生產環境中,但會新增新功能,並隨著時間修正 Bug,這需要重新部署應用程式。 依此類故。

如您所預期,在重新部署 Web 應用程式時,您只需要複製新的和變更的檔案。 雖然) 沒有損害,但不需要重新部署未變更的頁面或伺服器或用戶端支援檔案 (。

注意

使用明確編譯時要記住的一件事是,每當您將新的 ASP.NET 網頁新增至專案或進行任何程式碼相關的變更時,您需要重建專案,以更新 資料夾中的 Bin 元件。 因此,當您在生產 (上更新 Web 應用程式,以及其他新的和更新的內容) 時,您必須將此更新的元件複製到生產環境。

此外,也瞭解目錄中或檔案 Bin 的任何變更 Web.config 會停止,並重新啟動網站的應用程式集區。 如果您的會話狀態是使用 InProc 模式儲存 (預設) ,則每當修改這些金鑰檔案時,網站的訪客將會遺失其會話狀態。 若要避免此陷阱,請考慮使用 StateServerSQLServer 模式來儲存會話。 如需本主題的詳細資訊,請參閱 會話狀態模式

最後,請記住,重新部署應用程式可能需要幾秒鐘到幾分鐘的時間,視需要複製到生產環境的檔案數目和大小而定。 在這段期間,流覽您的網站的使用者可能會遇到錯誤或奇數行為。 您可以將名為 App_Offline.htm 的頁面新增至應用程式的根目錄,以「關閉」整個應用程式,向使用者說明網站已關閉以進行維護 (或任何) ,並很快就會備份。 App_Offline.htm當檔案存在時,ASP.NET 執行時間會將所有傳入要求重新導向至該頁面。

總結

部署 Web 應用程式需要將必要的檔案從開發環境複製到生產環境。 透過網路傳輸檔案最常見的方式是檔案傳輸通訊協定 (FTP) ,而大部分的 Web 主機提供者都支援其網頁伺服器的 FTP 存取。 在本教學課程中,我們已瞭解如何使用 FTP 用戶端將所需的檔案部署至 Web 服務器。 部署之後,任何人都可以透過連線到網際網路來流覽網站!

快樂的程式設計!

深入閱讀

如需本教學課程中所討論之主題的詳細資訊,請參閱下列資源: