共用方式為


使用 Visual Studio ASP.NET Web 部署:部署程式代碼更新

Tom Dykstra

下載入門專案

本教學課程系列說明如何使用 Visual Studio 2012 或 Visual Studio 2010,將 ASP.NET Web 應用程式部署到 Azure App 服務 Web Apps 或第三方主控提供者。 如需系列的相關信息,請參閱 系列中的第一個教學課程。

概觀

初始部署之後,您維護及開發網站的工作會繼續進行,而且在很久之前,您會想要部署更新。 本教學課程會引導您完成將更新部署至應用程式程式代碼的程式。 您在本教學課程中實作和部署的更新並不涉及資料庫變更;在下一個教學課程中,您將瞭解部署資料庫變更有何不同。

提醒:如果您在進行教學課程時收到錯誤訊息或某些項目無法運作,請務必檢查 疑難解答頁面

進行程式代碼變更

作為應用程式更新的簡單範例,您會將新增至 Instructors 頁面所選講師所教授的課程清單。

如果您執行 Instructors 頁面,您會發現 網格線中有 [選取 ] 連結,但除了讓數據列背景變成灰色以外,它們不會執行任何動作。

具有選取專案的講師頁面

現在,您將新增程式碼,此程式代碼會在按兩下 [選取] 連結時執行,並顯示所選講師所教授的課程清單。

  1. Instructors.aspx 中,於 ErrorMessageLabel Label 控件後面立即新增下列標記:

    <h3>Courses Taught</h3>
    <asp:ObjectDataSource ID="CoursesObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
        DataObjectTypeName="ContosoUniversity.DAL.Course" SelectMethod="GetCoursesByInstructor">
        <SelectParameters>
            <asp:ControlParameter ControlID="InstructorsGridView" Name="PersonID" PropertyName="SelectedDataKey.Value"
                Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>
    <asp:GridView ID="CoursesGridView" runat="server" DataSourceID="CoursesObjectDataSource"
        AllowSorting="True" AutoGenerateColumns="False" SelectedRowStyle-BackColor="LightGray"
        DataKeyNames="CourseID">
        <EmptyDataTemplate>
            <p>No courses found.</p>
        </EmptyDataTemplate>
        <Columns>
            <asp:BoundField DataField="CourseID" HeaderText="ID" ReadOnly="True" SortExpression="CourseID" />
            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
            <asp:TemplateField HeaderText="Department" SortExpression="DepartmentID">
                <ItemTemplate>
                    <asp:Label ID="GridViewDepartmentLabel" runat="server" Text='<%# Eval("Department.Name") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    
  2. 執行頁面並選取講師。 您會看到該講師所教授的課程清單。

    顯示 [講師] 頁面的螢幕快照,其中已醒目提示單一 Instructor,並顯示其教學課程。

  3. 關閉瀏覽器。

將程式代碼更新部署至測試環境

您必須先變更資料庫發佈選項,才能使用發行配置檔來部署以測試、預備和生產環境。 您不再需要執行成員資格資料庫的授與和數據部署腳本。

  1. 滑鼠右鍵按兩下 ContosoUniversity 項目,然後按兩下 [發佈],以開啟 [發佈 Web 精靈]。
  2. 按兩下 [配置檔] 下拉式清單中的 [測試設定檔]。
  3. 按一下 [Settings] \(設定\) 索引標籤。
  4. [資料庫] 區段中的 [DefaultConnection] 下,清除 [更新資料庫] 複選框。
  5. 按兩下 [配置檔] 索引標籤,然後按兩下 [設定檔] 下拉式清單中的 [預備設定檔]。
  6. 當系統詢問您是否要儲存對 測試 配置檔所做的變更時,請按兩下 [ ]。
  7. 在預備配置檔中進行相同的變更。
  8. 重複此程式,以在生產配置檔中進行相同的變更。
  9. 關閉 [ 發佈 Web 精靈]。

部署至測試環境現在是再次執行單鍵發行的簡單事項。 若要讓此程式更快速,您可以使用 [Web One Click Publish ] 工具列。

  1. 在 [ 檢視 ] 功能表中,選擇 [工具欄] ,然後選取 [Web One Click Publish]。

    Selecting_One_Click_Publish_toolbar

  2. 方案總管 中,選取 ContosoUniversity 專案。

  3. [Web One Click Publish] 工具列,選擇 [測試發佈配置檔],然後按兩下 [發佈 Web] (指向左和右箭號的圖示)。

    Web_One_Click_Publish_toolbar

  4. Visual Studio 會部署更新的應用程式,而瀏覽器會自動開啟至首頁。

  5. 執行 Instructors 頁面,然後選取講師以確認更新已成功部署。

您通常也會進行回歸測試(也就是測試月臺的其餘部分,以確保新的變更不會中斷任何現有的功能)。 但在本教學課程中,您將略過此步驟,並繼續將更新部署至預備和生產環境。

當您重新部署時,Web Deploy 會自動決定哪些檔案已變更,而且只會將變更的檔案複製到伺服器。 根據預設,Web Deploy 會在檔案上使用上次變更的日期,以判斷哪些日期已變更。 即使您未變更檔案內容,某些原始檔控制系統也會變更檔案日期。 在此情況下,您可能想要將 Web Deploy 設定為使用檔案總和檢查碼來判斷哪些檔案已變更。 如需詳細資訊,請參閱 ASP.NET 部署常見問題中的為何會重新部署 所有檔案。

在部署期間讓應用程式離線

您現在部署的變更是單一頁面的簡單變更。 但有時候您會部署較大的變更,或同時部署程式代碼和資料庫變更,而且如果使用者在部署完成前要求頁面,則網站的行為可能會不正確。 若要防止使用者在部署進行時存取網站,您可以使用 app_offline.htm 檔案。 當您將名為 app_offline.htm 的檔案放在應用程式的根資料夾中時,IIS 會自動顯示該檔案,而不是執行您的應用程式。 因此,若要防止在部署期間存取,請將app_offline.htm放在根資料夾中、執行部署程式,然後在成功部署後移除app_offline.htm

您可以將 Web Deploy 設定為在伺服器開始部署時自動將預設 app_offline.htm 檔案放在伺服器上,並在完成時將其移除。 若要這麼做,您必須將下列 XML 元素新增至您的發行配置檔 (.pubxml) 檔案:

<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>

在本教學課程中,您將瞭解如何建立和使用自定義 app_offline.htm 檔案。

不需要在預備網站中使用app_offline.htm,因為您沒有存取預備網站的使用者。 但最好使用預備環境來測試您在生產環境中部署的所有方式。

建立app_offline.htm

  1. 方案總管 中,以滑鼠右鍵按兩下方案,然後按兩下[新增],然後按兩下 [新增專案]。

  2. 建立名為 app_offline.htm 的 HTML 頁面(刪除 Visual Studio 預設建立之.html延伸模組中的最終 “l”。

  3. 將樣本標記取代為下列標記:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Contoso University - Under Construction</title>
    </head>
    <body>
      <h1>Contoso University</h1>
      <h2>Under Construction</h2>
      <p>The Contoso University site is temporarily unavailable while we upgrade it. Please try again later.</p>
    </body>
    </html>
    
  4. 儲存並關閉檔案。

將app_offline.htm複製到網站的根資料夾

您可以使用任何 FTP 工具來將檔案複製到網站。 FileZilla 是熱門的 FTP 工具,會在螢幕快照中顯示。

若要使用 FTP 工具,您需要三件事:FTP URL、使用者名稱和密碼。

URL 會顯示在 Azure 管理入口網站的儀錶板頁面上,而且您可以在您稍早下載的 .publishsettings 檔案中找到 FTP 的使用者名稱和密碼。 下列步驟示範如何取得這些值。

  1. 在 Azure 管理入口網站中,按兩下 [網站] 索引標籤,然後按下預備網站。

  2. 在 [儀錶板] 頁面上,向下捲動以在 [快速流覽] 區段中尋找 FTP 主機名

    FTP 主機名稱

  3. 在 [記事本] 或其他文本編輯器中開啟預備 .publishsettings 檔案。

  4. publishProfile尋找 FTP 設定檔的專案。

  5. userName複製和 userPWD 值。

    FTP 認證

  6. 開啟 FTP 工具並登入 FTP URL。

  7. 將app_offline.htm從方案資料夾複製到預備網站中的 /site/wwwroot 資料夾。

    複製app_offline

  8. 流覽至您預備網站的 URL。 您會看到app_offline.htm頁面現在會顯示,而不是首頁。

    瀏覽器視窗中的app_offline.htm

您現在已準備好部署至預備環境。

將程式代碼更新部署至預備和生產環境

  1. 在 [Web One Click Publish] 工具列中,選擇 [預備發佈配置檔],然後按兩下 [發佈 Web]。

    Visual Studio 會部署更新的應用程式,並將瀏覽器開啟至網站的首頁。 app_offline.htm檔案隨即顯示。 您必須先移除 app_offline.htm 檔案,才能測試以確認部署成功。

  2. 返回 FTP 工具,然後從預備網站刪除 app_offline.htm

  3. 在瀏覽器中,開啟預備網站中的 Instructors 頁面,然後選取講師以確認更新已成功部署。

  4. 請遵循與預備階段相同的生產程式。

檢閱變更和部署特定檔案

Visual Studio 2012 也可讓您部署個別檔案。 針對選取的檔案,您可以檢視本機版本與已部署版本之間的差異、將檔案部署到目的地環境,或將檔案從目的地環境複製到本機專案。 在本教學課程的本節中,您將瞭解如何使用這些功能。

進行變更以部署

  1. 開啟 Content/Site.css,並尋找標記的 body 區塊。

  2. 將的值 background-color#fff 變更為 darkblue

    body {
        background-color: darkblue;
        border-top: solid 10px #000;
        color: #333;
        font-size: .85em;
        font-family: "Segoe UI", Verdana, Helvetica, Sans-Serif;
        margin: 0;
        padding: 0;
    }
    

在 [發佈預覽] 視窗中檢視變更

當您使用 [發佈 Web 精靈] 發佈專案時,您可以按兩下 [預覽] 視窗中的檔案,查看要發佈的變更。

  1. 以滑鼠右鍵按兩下 ContosoUniversity 項目,然後按兩下 [ 發佈]。

  2. 從 [ 配置檔] 下拉式清單中,選取 [ 測試 發行配置檔]。

  3. 按兩下 [ 預覽],然後按兩下 [ 開始預覽]。

  4. 在 [ 預覽] 窗格中,按兩下 [Site.css]。

    按兩下Site.css

    [ 預覽變更 ] 對話框會顯示將部署之變更的預覽。

    預覽Site.css的變更

    如果您按兩下 Web.config 檔案,[ 預覽變更 ] 對話框會顯示組建組態轉換和發佈設定檔轉換的效果。 此時,您未執行任何會導致 伺服器上的 Web.config 檔案變更的任何動作,因此您預期不會看到任何變更。 不過,預覽 變更 視窗不正確地顯示兩個變更。 這看起來會移除兩個 XML 元素。 當您為 Code First 內容類別選取 [在應用程式啟動時執行 Code First 移轉 時,發佈程式會新增這些專案。 在發佈程式新增這些專案之前,會先進行比較,因此看起來它們會遭到移除,但不會移除它們。 未來版本將會更正此錯誤。

  5. 按一下 [關閉] 。

  6. 按一下發行

  7. 當瀏覽器開啟至測試網站的首頁時,請按 CTRL+F5 造成硬式重新整理,以查看 CSS 變更的效果。

    CSS 變更的效果

  8. 關閉瀏覽器。

從 方案總管 發佈特定檔案

假設您不喜歡藍色背景,且想要還原為原始色彩。 在本節中,您將直接從 方案總管 發佈特定檔案,以還原原始設定。

  1. 開啟 [內容/Site.css]background-color並將設定還原至 #fff

  2. [方案總管] 中,以滑鼠右鍵按兩下 Content/Site.css 檔案。

    操作功能表會顯示三個發佈選項。

    從 方案總管 發佈選項

  3. 按兩下 [預覽變更] 以Site.css

    視窗隨即開啟,以顯示本機檔案與目的地環境中的版本之間的差異。

    Diff-Content/Site.css

  4. [方案總管] 中,再次以滑鼠右鍵按兩下 [Site.css],然後按兩下 [發佈Site.css]。

    [ Web 發佈活動 ] 視窗會顯示檔案已發佈。

    [Web 發佈活動] 視窗

  5. 開啟瀏覽器至 http://localhost/contosouniversity URL,然後按 CTRL+F5 造成硬式重新整理,以查看 CSS 變更的效果。

    具有一般 CSS 的首頁

  6. 關閉瀏覽器。

摘要

您現在已看到數種方式來部署未涉及資料庫變更的應用程式更新,並已瞭解如何預覽變更,以確認所預期的更新內容。 講師頁面現在有一個 課程教學 區段。

顯示 [講師] 頁面和特定講師所教授課程的螢幕快照。

下一個教學課程說明如何部署資料庫變更:您將將出生日期欄位新增至資料庫和 Instructors 頁面。