Share via


使用 Visual Studio 或 Visual Web Developer 部署具有SQL Server Compact的 ASP.NET Web 應用程式:部署 Code-Only Update - 12 的 8

By Tom Dykstra

下載入門專案

本系列教學課程說明如何使用 Visual Studio 2012 RC 或 Visual Studio Express 2012 RC for Web,部署 (發佈) ASP.NET 包含 SQL Server Compact 資料庫的 web 應用程式專案。 如果您安裝 Web 發佈更新,您也可以使用 Visual Studio 2010。 如需系列簡介,請參閱 系列的第一個教學課程。

如需示範 Visual Studio 2012 RC 版本之後所引進部署功能的教學課程,示範如何部署 SQL Server Compact 以外的SQL Server版本,並示範如何部署至 Azure App 服務 Web Apps,請參閱使用 Visual Studio ASP.NET Web 部署

概觀

在初始部署之後,您維護及開發網站的工作會繼續,而且在很長的時間之前,您會想要部署更新。 本教學課程會引導您完成將更新部署至應用程式程式碼的程式。 此更新不包含資料庫變更;您將在下一個教學課程中看到部署資料庫變更有何不同。

提醒:如果您在完成教學課程時收到錯誤訊息或某些專案無法運作,請務必檢查 疑難排解頁面

進行程式碼變更

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

如果您執行 Instructors 頁面,您會發現方格中有 [ 選取 ] 連結,但它們不會執行任何其他動作,而不是讓資料列背景變成灰色。

Instructors_page

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

Instructors.aspx中,在ErrorMessageLabelLabel 控制項後面立即新增下列標記:

<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>

執行頁面並選取講師。 您會看到該講師所教授的課程清單。

Instructors_page_with_courses

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

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

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

Selecting_One_Click_Publish_toolbar

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

[Web One Click Publish] 工具列,選擇[測試發佈設定檔],然後按一下 [發佈 Web] (圖示,其中箭號指向左和右) 。

Web_One_Click_Publish_toolbar

Visual Studio 會部署更新的應用程式,而瀏覽器會自動開啟至首頁。 執行 Instructors 頁面,然後選取講師以確認更新已成功部署。

Instructors_page_with_courses_Test

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

防止將初始資料庫狀態重新部署至生產環境

在實際應用程式中,使用者會在初始部署之後與您的生產網站互動,且資料庫會填入即時資料。 因此,您不想重新部署其初始狀態的成員資格資料庫,這會抹除所有即時資料。 由於SQL Server Compact資料庫是App_Data資料夾中的檔案,因此您必須變更部署設定來避免此情況,如此就不會部署App_Data資料夾中的檔案。

開啟 ContosoUniversity 專案的 [ 專案屬性 ] 視窗,然後選取 [ 套件/發佈 Web ] 索引標籤。請確定 [ 組態 ] 下拉式方塊已選取 [ 作用中] ([發行) ] 或 [ 發行 ], 然後從 [App_Data] 資料夾中選取 [排除檔案]。

Exclude_files_from_the_App_Data_folder

如果您決定在未來部署偵錯組建,最好對偵錯組建組態進行相同的變更 :將組變更為偵 錯,然後 從App_Data資料夾中選取 [排除檔案]。

儲存並關閉 [ 套件/發佈 Web] 索引標籤。

注意

重要

請確定您沒有在發佈設定檔中選取 的目的地移除其他檔案 。 如果您選取該選項,部署程式將會刪除您在已部署網站中App_Data的資料庫,而且會刪除App_Data資料夾本身。

防止使用者在更新期間存取生產網站

您正在部署的變更現在是單一頁面的簡單變更。 但有時候您會部署較大的變更,在此情況下,如果使用者在部署完成之前要求頁面,網站的行為可能會很奇怪。 若要避免這種情況,您可以使用 app_offline.htm 檔案。 當您將名為 app_offline.htm 的檔案放在應用程式的根資料夾中時,IIS 會自動顯示該檔案,而不是執行您的應用程式。 因此,若要避免在部署期間存取,請將 app_offline.htm 放在根資料夾中、執行部署程式,然後移除 app_offline.htm

方案總管中,以滑鼠右鍵按一下方案, (不是其中一個專案) ,然後選取 [新增方案資料夾]。

Creating_a_solution_folder

將資料夾命名為 SolutionFiles

在新資料夾中,建立名為 app_offline.htm的 HTML 頁面。 以下列標記取代現有的內容:

<!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>

您可以使用裝載提供者控制台中的 FTP 連線或檔案管理員公用程式,將app_offline.htm檔案複製到月臺。 在本教學課程中,您將使用 檔案管理員

開啟控制台,然後選取 [ 檔案管理員 ],如同您在 部署至生產環境 教學課程中所做的一樣。 選取 [contosouniversity.com ],然後 選取 [wwwroot ] 以移至應用程式的根資料夾,然後按一下 [ 上傳]。

Upload_button_in_File_Manager

在 [ 上傳檔案 ] 對話方塊中,選取 app_offline.htm 檔案,然後按一下 [ 上傳]。

Upload_dialog_box_in_File_Manager

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

App_offline.htm_page_in_production

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

將程式碼更新部署至生產環境

[Web One Click Publish ] 工具列中,選擇 [生產 發佈設定檔],然後按一下 [ 發佈 Web]。

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

返回控制台中的 [檔案管理員 ] 應用程式。 選取 [contosouniversity.com ] 和 [wwwroot],選取 [app_offline.htm],然後按一下 [ 刪除]。

Deleting_app_offline.htm

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

Instructors_page_with_courses_Prod

您現在已部署未涉及資料庫變更的應用程式更新。 下一個教學課程說明如何部署資料庫變更。