微軟ASP.NET站點部署指南(8):部署Code-Only更新
2011-11-30 12:52 湯姆大叔 閱讀(2391) 評論(0) 收藏 舉報1. 綜述
初始化部署以后,你需要繼續維護和更新你的站點。本章節將向你展示一個不包括數據庫改變的部署升級流程。(下一章節將展示數據庫改變的部署升級流程。)
提醒:如果根據本章節所做的操作出現錯誤信息或一些功能不正常的話,請務必check Troubleshooting頁面。
2. 修改代碼
為你的程序做一個簡單的修改,在Instructors 列表頁添加一個功能,一般選擇一個Instructor的時候能夠顯示該Instructors 的所有課程courses。
在Instructors頁面可以看到每個記錄有個Select連接,點擊之后除了行會變灰色,其它什么都沒有做。

添加代碼,當點擊Select連接的時候顯示該instructor的課程courses。
在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>
重新運行該頁面,選擇一個instructor,你將看到一個該instructor的所有課程courses列表。

3. 部署到測試環境
部署到測試環境,只需要簡單的重復步驟one-click發布就行了。
Solution Configurations下拉菜單里選擇Test build配置,在Publish profile下拉菜單里選擇Test,然后點擊Publish Web。

如果你自定義了你的Visual Studio使這些工具欄的這些設置不能用的話,請選擇配置管理器Configuration Manager里的Active solution configuration(從Build菜單里選擇Configuration Manager),在Publish Web對話框里選擇Test profile(Solution Explorer里右鍵 ContosoUniversity項目,選擇Publish) ,點擊Publish。
點擊Publish以后,Visual Studio會在Output窗口顯示部署成功的信息。

現在可以通過http://localhost/ContosoUniversity/Instructors.aspx訪問了,點擊 一個Select連接驗證修改是否生效。

之后,你需要做一些回歸測試(測試新修改不會對其它的功能產生影響)。本章節你可以忽略這個步驟直接部署到生產環境。
4. 預防生產環境重新初始化數據庫
在生產環境中第一次部署之后,已經有了真實用戶數據,如果修改以后還使用以前的部署設置的話,那就會把數據庫重新初始化,真實的用戶數據將被清空。由于SQL Server Compact數據庫是存放在App_Data文件夾下的文件,所以升級部署只需要防止App_Data不背重新部署就行了。
打開Project Properties窗口,點擊Package/Publish Web選項卡。確保Configuration下拉菜單的選項是Active (Release)或Release。選擇Exclude files from the App_Data folder,然后保存關閉。

確保測試的配置也是一樣的:修改Configuration為Test然后選擇Exclude files from the App_Data folder。
5. 部署升級期間防止用戶訪問
你這次的修改是一個非常簡單的修改,如果修改很多的話,那在部署結束之前用戶還在訪問的話,將會看到不可思議的錯誤結果。可以使用app_offline.htm文件來防止這種情況。當你在根目錄上次名稱為app_offline.htm 文件的時候,IIS將自動讓該站點停運,并且顯示該頁面。所以,合理的部署步驟是,上傳app_offline.htm,部署,部署結束以后刪除app_offline.htm 文件。
Solution Explorer里右鍵解決方案(不是項目),選擇New Solution Folder。

文件夾命名為SolutionFiles,在里面創建一個名為app_offline.htm的頁面,替換成如下內容:
<!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文件或者使用控制面板里的File Manager工具上傳。本章節使用File Manager來演示。
打開控制面板選擇File Manager,選擇contosouniversity.com,然后選擇wwwroot,點擊Upload。

在Upload File對話框選擇app_offline.htm文件,然后上傳。

訪問網站,這時候你看到首頁顯示的是app_offline.htm頁面的內容了。

現在,可以安心地將程序部署到生產環境了。
(該教程不升級部署的時候,在Publish profile里應該選擇Leave Extra files on destination (do not delete)選項,如果不選,會刪除生產環境所有不需要的文件,所以部署之前,確保有一個app_offline.htm文件的備份,因為可能在你想刪除的時候Web Deploy已經將它刪除了。)
6. 部署到生產環境
在Solution Configurations下拉菜單,選擇Release build配置,并且Publish profile里選擇Production,然后點擊Publish Web。

Visual Studio將部署了修改后的程序,然后輸入消息到Output窗口。

在驗證是否是成功的部署之前,你需要先將app_offline.htm文件刪除。
重新回到控制面板的File Manager程序選擇contosouniversity.com->wwwroot,選擇app_offline.htm然后點擊Delete刪除。

打開網站上的Instructors.aspx頁面,選擇一個記錄上的Select連接,驗證是否成功部署了修改內容。

至此,你已經成功部署了一個沒有數據庫改變的升級程序。下一章節展示給你的是如何部署一個數據庫更新。
初始化部署以后,你需要繼續維護和更新你的站點。本章節將向你展示一個不包括數據庫改變的部署升級流程。(下一章節將展示數據庫改變的部署升級流程。)
提醒:如果根據本章節所做的操作出現錯誤信息或一些功能不正常的話,請務必check Troubleshooting頁面。
浙公網安備 33010602011771號