共用方式為


使用 Visual Studio ASP.NET Web 部署:簡介

作者 :Tom Dykstra

下載入門專案

本教學課程系列說明如何使用 Visual Studio 2012 搭配適用於 .NET 的 Azure SDK,將 (發佈) ASP.NET Web 應用程式部署至 Azure App 服務 Web Apps 或第三方裝載提供者。 大部分的程式都與 Visual Studio 2013類似。

您可以開發 Web 應用程式,使其可供因特網上的人員使用。 但 Web 程式設計教學課程通常會在它們示範如何讓開發電腦上運作之後立即停止。 這一系列的教學課程會從其他人離職的地方開始:您已建置 Web 應用程式、進行測試,並準備好繼續進行。 後續步驟? 這些教學課程示範如何在本機開發計算機上先部署至 IIS 以進行測試,然後部署至 Azure 或用於預備和生產環境的第三方裝載提供者。 您將部署的範例應用程式是使用 Entity Framework、SQL Server 和 ASP.NET 成員資格系統的 Web 應用程式專案。 範例應用程式會使用 ASP.NET Web Forms,但顯示的程式也適用於 ASP.NET MVC 和 Web API。

這些教學課程假設您知道如何在 Visual Studio 中使用 ASP.NET。 如果您沒有這麼做,最好是基本 ASP.NET Web Forms 教學課程或基本 ASP.NET MVC 教學課程

如果您有與教學課程不直接相關的問題,您可以將問題張貼至 ASP.NET 部署論壇StackOverflow

概觀

這些教學課程會引導您部署包含 SQL Server 資料庫的 ASP.NET Web 應用程式。 您會先部署至本機開發計算機上的 IIS 進行測試,然後在 Azure App 服務 和生產 Azure SQL 資料庫中 Web Apps。 您將瞭解如何使用 Visual Studio 單鍵發佈進行部署,並瞭解如何使用命令行進行部署。

教學課程的數目可能會讓部署程式看起來很困難。 事實上,基本程序很簡單。 不過,在真實世界中,您通常需要執行額外的部署工作,例如,在目標伺服器上設定資料夾許可權。 我們已說明其中一些額外的工作,希望教學課程不會省略可能導致您無法成功部署實際應用程序的資訊。

本教學課程的設計目的是要依序執行,而每個元件都是以上一個部分為基礎而建置。 您可以略過與情況無關的元件,但您可能必須在稍後的教學課程中調整程式。

目標對象

本教學課程旨在 ASP.NET 在下列環境中工作的開發人員:

  • 生產環境 Azure App 服務 Web Apps 或第三方裝載提供者。
  • 部署不限於持續整合程式,但可以直接從Visual Studio完成。

除了示範如何從命令行部署的教學課程之外,這些教學課程並未涵蓋使用持續傳遞程式的原始檔控制部署。 如需持續傳遞的相關信息,請參閱下列資源:

使用第三方主機提供者

本教學課程會引導您完成設定 Azure 帳戶,並將應用程式部署至預備和生產 Azure App 服務 中的 Web Apps 程式。 不過,您可以使用相同的基本程式來部署至您選擇的第三方主機提供者。 教學課程會在 Azure 特有的流程中說明,並建議您在第三方主機提供者預期有何差異。

部署 Web 應用程式專案

您下載並部署這些教學課程的範例應用程式是 Visual Studio Web 應用程式專案。 不過,如果您為 Visual Studio 安裝最新的 Web 發佈更新,則可以針對 Web 應用程式專案使用相同的部署方法和工具。

部署 ASP.NET MVC 專案

範例應用程式是 ASP.NET Web Forms 專案,但您學到的一切也適用於 ASP.NET MVC。 Visual Studio MVC 專案只是另一種 Web 應用程式專案形式。 唯一的差別在於,如果您要部署到不支援 ASP.NET MVC 或目標版本的主機提供者,您必須確定您已在專案中安裝適當的 (MVC 3MVC 4MVC 5) NuGet 套件。

程式設計語言

範例應用程式會使用 C#,但教學課程不需要 C# 的知識,而且教學課程所顯示的部署技術並非特定語言。

資料庫部署方法

有三種方式可讓您在 Visual Studio 中部署 SQL Server 資料庫以及 Web 部署:

  • Entity Framework Code First 移轉
  • dbDacFx Web Deploy 提供者
  • dbFullSql Web Deploy 提供者

在本教學課程中,您將使用這兩種方法的前兩個。 dbFullSql Web Deploy 提供者是舊版方法,除了從 SQL Server Compact 移轉至 SQL Server 等某些特定案例之外,不再建議使用此方法。

本教學課程中顯示的方法適用於 SQL Server 資料庫,而非 SQL Server Compact。 如需如何部署 SQL Server Compact 資料庫的資訊,請參閱 Visual Studio Web Deployment With SQL Server Compact

本教學課程中顯示的方法會要求您使用Web Deploy發佈方法。 如果您偏好不同的發佈方法,例如 FTP、檔案系統或 FPSE,請參閱在適用於 Visual Studio 的 Web 部署內容對應和 ASP.NET 中 個別部署 Web 應用程式

Entity Framework Code First 移轉

在 Entity Framework 4.3 版中,Microsoft 引進了 Code First 移轉。 Code First 移轉 自動化對數據模型進行累加式變更,並將這些變更傳播至資料庫的程式。 在舊版 Code First 中,您通常會在每次變更數據模型時,讓 Entity Framework 卸除並重新建立資料庫。 這不是開發中的問題,因為測試數據很容易重新建立,但在生產環境中,您通常想要更新資料庫架構而不卸除資料庫。 移轉功能可讓 Code First 更新資料庫,而不需卸除並重新建立資料庫。 您可以讓 Code First 自動決定如何進行必要的架構變更,也可以撰寫可自定義變更的程式代碼。 如需 Code First 移轉 簡介,請參閱 Code First 移轉

當您部署 Web 專案時,Visual Studio 可以自動化部署由 Code First 移轉 管理之資料庫的程式。 當您建立發行設定檔時,您會選取標示為在應用程式啟動時執行 Code First 移轉 (執行) 複選框。 此設定會導致部署程式在目的地伺服器上自動設定應用程式 Web.config 檔案,讓 Code First 使用 MigrateDatabaseToLatestVersion 初始化運算式類別。

Visual Studio 不會在部署程式期間對資料庫執行任何動作。 當部署的應用程式第一次在部署後存取資料庫時,Code First 會自動建立資料庫,或將資料庫架構更新為最新版本。 如果應用程式實作 Migrations Seed 方法,方法會在建立資料庫或更新架構之後執行。

在本教學課程中,您將使用 Code First 移轉 來部署應用程式資料庫。

dbDacFx Web Deploy 提供者

對於未受 Entity Framework Code First 管理的 SQL Server 資料庫,您可以在設定發行配置檔時選取標示為 [更新資料庫] 的複選框。 在初始部署期間,dbDacFx 提供者會在目的地資料庫中建立數據表和其他資料庫物件,以符合源資料庫。 在後續的部署中,提供者會決定來源和目的地資料庫之間的差異,並更新目的地資料庫的架構以符合源資料庫。 根據預設,提供者不會進行任何造成數據遺失的變更,例如卸除數據表或數據行時。

此方法不會自動部署資料庫數據表中的數據,但您可以建立腳本來執行此動作,並將Visual Studio設定為在部署期間執行。 部署期間執行腳本的另一個原因是進行架構變更,因為其會造成數據遺失。

在本教學課程中,您將使用 dbDacFx 提供者來部署 ASP.NET 成員資格資料庫。

本教學課程期間的疑難解答

當部署期間發生錯誤,或部署的網站未正確執行時,錯誤訊息不一定會提供明顯的解決方案。 為了協助您解決一些常見的問題案例,有 一個疑難解答參考頁面 可供使用。 如果您在進行教學課程時收到錯誤訊息或某些內容無法運作,請務必檢查疑難解答頁面。

歡迎使用批注

歡迎使用教學課程的批注,而且每次更新教學課程時,都會考慮教學課程批注中所提供改進的修正或建議。

必要條件

本教學課程是針對下列產品所撰寫:

您可以使用 Visual Studio 2010 SP1 或 Visual Studio 2013 來遵循本教學課程,但有些螢幕快照會不同,有些功能會不同。

如果您使用 Visual Studio 2013,請安裝 Azure SDK for Visual Studio 2013

如果您使用 Visual Studio 2010 SP1,請安裝下列軟體:

根據計算機上已有多少 SDK 相依性,安裝 Azure SDK 可能需要很長的時間,從數分鐘到半小時以上。 即使您打算發行至第三方主機提供者而非 Azure,也需要 Azure SDK,因為 SDK 包含 Visual Studio Web 發佈功能的最新更新。

注意

本教學課程是以 Azure SDK 1.8.1 版撰寫。 自之後,已發行具有其他功能的較新版本。 教學課程已更新為提及這些功能,並連結至具有詳細信息的資源。

指示和螢幕快照是以 Windows 8 為基礎,但教學課程說明 Windows 7 的差異。

需要一些其他軟體才能完成本教學課程,但您不需要安裝該軟體。 本教學課程將逐步引導您完成在需要時安裝的步驟。

下載範例應用程式

您將部署的應用程式名為 Contoso University,並已為您建立。 這是一個簡化版本的大學網站,以 Contoso University 應用程式為基礎,以 ASP.NET 網站上的 Entity Framework 教學課程中所述。

安裝必要條件後,請下載 Contoso University Web 應用程式.zip 檔案包含專案的多個版本。 若要完成教學課程的步驟,請從位於 C# 資料夾中的項目開始。 若要查看專案在教學課程結尾的外觀,請在 [ContosoUniversity-End] 資料夾中開啟專案。

若要準備專案以完成教學課程步驟,請執行下列步驟:

  1. 將 ContosoUniversity 方案檔案從 C# 資料夾儲存在您用於處理 Visual Studio 專案的任何資料夾中,名為 ContosoUniversity 的資料夾中。

    根據預設,這是 Visual Studio 2012 的下列資料夾:

    C:\Users\<username>\Documents\Visual Studio 2012\Projects

    (本教學課程中的螢幕快照,專案資料夾位於 : drive.) 的 C根目錄中

  2. 啟動 Visual Studio 並開啟專案。

  3. 方案總管 中,以滑鼠右鍵按兩下解決方案,然後按兩下[啟用NuGet 套件還原]。

  4. 建置方案。

  5. 如果您收到編譯錯誤,請手動還原 NuGet 套件:

    1. [方案總管] 中,以滑鼠右鍵按兩下方案,然後按兩下 [管理方案的 NuGet 套件]。
    2. 在 [ 管理 NuGet 套件 ] 對話框頂端,您會看到 此解決方案中缺少一些 NuGet 套件。按兩下以還原。 按兩下 [ 還原] 按鈕。
    3. 重建方案。
  6. 按 CTRL-F5 執行應用程式。

    應用程式會開啟至 Contoso University 首頁。

    首頁開發

    (Visual Studio 啟動 SQL Server Express LocalDB 實例時可能會有等候時間,而且如果該程式花費太長的時間,您可能會收到逾時錯誤。在此情況下,請再次啟動專案。)

網站頁面可從功能表欄存取,並可讓您執行下列功能:

  • ([關於] 頁面) 顯示學生統計數據。
  • 顯示、編輯、刪除和新增學生。
  • 顯示和編輯課程。
  • 顯示和編輯講師。
  • 顯示和編輯部門。

以下是幾個代表性頁面的螢幕快照。

學生頁面開發

新增學生頁面開發

檢閱影響部署的應用程式功能

應用程式的下列功能會影響部署它的方式,或您必須執行哪些動作來部署它。 這其中每一項都會在系列中的下列教學課程中更詳細地說明。

  • Contoso University 使用 SQL Server 資料庫來儲存應用程式數據,例如學生和講師名稱。 資料庫包含測試數據和生產數據的混合,當您部署至生產環境時,您需要排除測試數據。
  • 應用程式會使用 ASP.NET 成員資格系統,將使用者帳戶資訊儲存在 SQL Server 資料庫中。 應用程式會定義可存取某些受限制資訊的系統管理員使用者。 您必須在沒有測試帳戶的情況下部署成員資格資料庫,但需使用系統管理員帳戶。
  • 應用程式會使用第三方錯誤記錄和報告公用程式。 此公用程式是在必須與應用程式一起部署的元件中提供。
  • 錯誤記錄公用程式會將 XML 檔案中的錯誤資訊寫入檔案資料夾。 您必須確定 ASP.NET 在已部署網站中執行的帳戶具有此資料夾的寫入許可權,而且您必須從部署中排除此資料夾。 (否則,可能會將測試環境中的錯誤記錄數據部署到生產環境,以及/或可能會刪除生產錯誤記錄檔。)
  • 應用程式包含一些必須在已部署 Web.config 檔案中變更的設定,視目的地環境而定, (測試、預備或生產) ,以及其他必須根據建置組態 (偵錯或發行) 變更的設定。
  • Visual Studio 方案包含類別庫專案。 只應該部署此項目產生的元件,而不是專案本身。

摘要

在本系列的第一個教學課程中,您已下載範例Visual Studio專案,並檢閱會影響您部署應用程式方式的網站功能。 在下列教學課程中,您會設定其中一些要自動處理的事項來準備部署。 您手動處理的其他專案。