使用 Visual Studio ASP.NET Web 部署:部署程式代碼更新
本教學課程系列說明如何使用 Visual Studio 2012 或 Visual Studio 2010,將 ASP.NET Web 應用程式部署到 Azure App 服務 Web Apps 或第三方主控提供者。 如需系列的相關信息,請參閱 系列中的第一個教學課程。
概觀
初始部署之後,您維護及開發網站的工作會繼續進行,而且在很久之前,您會想要部署更新。 本教學課程會引導您完成將更新部署至應用程式程式代碼的程式。 您在本教學課程中實作和部署的更新並不涉及資料庫變更;在下一個教學課程中,您將瞭解部署資料庫變更有何不同。
提醒:如果您在進行教學課程時收到錯誤訊息或某些項目無法運作,請務必檢查 疑難解答頁面。
進行程式代碼變更
作為應用程式更新的簡單範例,您會將新增至 Instructors 頁面所選講師所教授的課程清單。
如果您執行 Instructors 頁面,您會發現 網格線中有 [選取 ] 連結,但除了讓數據列背景變成灰色以外,它們不會執行任何動作。
現在,您將新增程式碼,此程式代碼會在按兩下 [選取] 連結時執行,並顯示所選講師所教授的課程清單。
在 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>
執行頁面並選取講師。 您會看到該講師所教授的課程清單。
關閉瀏覽器。
將程式代碼更新部署至測試環境
您必須先變更資料庫發佈選項,才能使用發行配置檔來部署以測試、預備和生產環境。 您不再需要執行成員資格資料庫的授與和數據部署腳本。
- 以滑鼠右鍵按兩下 ContosoUniversity 項目,然後按兩下 [發佈],以開啟 [發佈 Web 精靈]。
- 按兩下 [配置檔] 下拉式清單中的 [測試設定檔]。
- 按一下 [Settings] \(設定\) 索引標籤。
- 在 [資料庫] 區段中的 [DefaultConnection] 下,清除 [更新資料庫] 複選框。
- 按兩下 [配置檔] 索引標籤,然後按兩下 [設定檔] 下拉式清單中的 [預備設定檔]。
- 當系統詢問您是否要儲存對 測試 配置檔所做的變更時,請按兩下 [ 是]。
- 在預備配置檔中進行相同的變更。
- 重複此程式,以在生產配置檔中進行相同的變更。
- 關閉 [ 發佈 Web 精靈]。
部署至測試環境現在是再次執行單鍵發行的簡單事項。 若要讓此程式更快速,您可以使用 [Web One Click Publish ] 工具列。
在 [ 檢視 ] 功能表中,選擇 [工具欄] ,然後選取 [Web One Click Publish]。
在 方案總管 中,選取 ContosoUniversity 專案。
[Web One Click Publish] 工具列,選擇 [測試發佈配置檔],然後按兩下 [發佈 Web] (指向左和右箭號的圖示)。
Visual Studio 會部署更新的應用程式,而瀏覽器會自動開啟至首頁。
執行 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
在 方案總管 中,以滑鼠右鍵按兩下方案,然後按兩下[新增],然後按兩下 [新增專案]。
建立名為 app_offline.htm 的 HTML 頁面(刪除 Visual Studio 預設建立之.html延伸模組中的最終 “l”。
將樣本標記取代為下列標記:
<!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>
儲存並關閉檔案。
將app_offline.htm複製到網站的根資料夾
您可以使用任何 FTP 工具來將檔案複製到網站。 FileZilla 是熱門的 FTP 工具,會在螢幕快照中顯示。
若要使用 FTP 工具,您需要三件事:FTP URL、使用者名稱和密碼。
URL 會顯示在 Azure 管理入口網站的儀錶板頁面上,而且您可以在您稍早下載的 .publishsettings 檔案中找到 FTP 的使用者名稱和密碼。 下列步驟示範如何取得這些值。
在 Azure 管理入口網站中,按兩下 [網站] 索引標籤,然後按下預備網站。
在 [儀錶板] 頁面上,向下捲動以在 [快速流覽] 區段中尋找 FTP 主機名。
在 [記事本] 或其他文本編輯器中開啟預備 .publishsettings 檔案。
publishProfile
尋找 FTP 設定檔的專案。userName
複製和userPWD
值。開啟 FTP 工具並登入 FTP URL。
將app_offline.htm從方案資料夾複製到預備網站中的 /site/wwwroot 資料夾。
流覽至您預備網站的 URL。 您會看到app_offline.htm頁面現在會顯示,而不是首頁。
您現在已準備好部署至預備環境。
將程式代碼更新部署至預備和生產環境
在 [Web One Click Publish] 工具列中,選擇 [預備發佈配置檔],然後按兩下 [發佈 Web]。
Visual Studio 會部署更新的應用程式,並將瀏覽器開啟至網站的首頁。 app_offline.htm檔案隨即顯示。 您必須先移除 app_offline.htm 檔案,才能測試以確認部署成功。
返回 FTP 工具,然後從預備網站刪除 app_offline.htm 。
在瀏覽器中,開啟預備網站中的 Instructors 頁面,然後選取講師以確認更新已成功部署。
請遵循與預備階段相同的生產程式。
檢閱變更和部署特定檔案
Visual Studio 2012 也可讓您部署個別檔案。 針對選取的檔案,您可以檢視本機版本與已部署版本之間的差異、將檔案部署到目的地環境,或將檔案從目的地環境複製到本機專案。 在本教學課程的本節中,您將瞭解如何使用這些功能。
進行變更以部署
開啟 Content/Site.css,並尋找標記的
body
區塊。將的值
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 精靈] 發佈專案時,您可以按兩下 [預覽] 視窗中的檔案,查看要發佈的變更。
以滑鼠右鍵按兩下 ContosoUniversity 項目,然後按兩下 [ 發佈]。
從 [ 配置檔] 下拉式清單中,選取 [ 測試 發行配置檔]。
按兩下 [ 預覽],然後按兩下 [ 開始預覽]。
在 [ 預覽] 窗格中,按兩下 [Site.css]。
[ 預覽變更 ] 對話框會顯示將部署之變更的預覽。
如果您按兩下 Web.config 檔案,[ 預覽變更 ] 對話框會顯示組建組態轉換和發佈設定檔轉換的效果。 此時,您未執行任何會導致 伺服器上的 Web.config 檔案變更的任何動作,因此您預期不會看到任何變更。 不過,預覽 變更 視窗不正確地顯示兩個變更。 這看起來會移除兩個 XML 元素。 當您為 Code First 內容類別選取 [在應用程式啟動時執行 Code First 移轉 時,發佈程式會新增這些專案。 在發佈程式新增這些專案之前,會先進行比較,因此看起來它們會遭到移除,但不會移除它們。 未來版本將會更正此錯誤。
按一下 [關閉] 。
按一下發行。
當瀏覽器開啟至測試網站的首頁時,請按 CTRL+F5 造成硬式重新整理,以查看 CSS 變更的效果。
關閉瀏覽器。
從 方案總管 發佈特定檔案
假設您不喜歡藍色背景,且想要還原為原始色彩。 在本節中,您將直接從 方案總管 發佈特定檔案,以還原原始設定。
開啟 [內容/Site.css]
background-color
,並將設定還原至#fff
。在 [方案總管] 中,以滑鼠右鍵按兩下 Content/Site.css 檔案。
操作功能表會顯示三個發佈選項。
按兩下 [預覽變更] 以Site.css。
視窗隨即開啟,以顯示本機檔案與目的地環境中的版本之間的差異。
在 [方案總管] 中,再次以滑鼠右鍵按兩下 [Site.css],然後按兩下 [發佈Site.css]。
[ Web 發佈活動 ] 視窗會顯示檔案已發佈。
開啟瀏覽器至
http://localhost/contosouniversity
URL,然後按 CTRL+F5 造成硬式重新整理,以查看 CSS 變更的效果。關閉瀏覽器。
摘要
您現在已看到數種方式來部署未涉及資料庫變更的應用程式更新,並已瞭解如何預覽變更,以確認所預期的更新內容。 講師頁面現在有一個 課程教學 區段。
下一個教學課程說明如何部署資料庫變更:您將將出生日期欄位新增至資料庫和 Instructors 頁面。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應