天天看點

ASP.NET站點部署:部署Code-Only更新

初始化部署以後,你需要繼續維護和更新你的站點。本章節将向你展示一個不包括資料庫改變的部署更新流程。(下一章節将展示資料庫改變的部署更新流程。)

  提醒:如果根據本章節所做的操作出現錯誤資訊或一些功能不正常,請務必check Troubleshooting頁面。

  <b>修改代碼</b>

  為你的程式做一個簡單的修改,在Instructors 清單頁添加一個功能,一般選擇一個Instructor的時候能夠顯示該Instructors 的所有課程courses。

  在Instructors頁面可以看到每個記錄有個Select連接配接,點選之後除了行會變灰色,其它什麼都沒有做。

  

ASP.NET站點部署:部署Code-Only更新

  添加代碼,當點選Select連接配接的時候顯示該instructor的課程courses。

  在Instructors.aspx頁面,在ErrorMessageLabel label控件之後添加如下代碼:

&lt;h3&gt;Courses Taught&lt;/h3&gt;

&lt;asp:ObjectDataSource ID="CoursesObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL" 

   DataObjectTypeName="ContosoUniversity.DAL.Course" SelectMethod="GetCoursesByInstructor"&gt;

    &lt;SelectParameters&gt;

        &lt;asp:ControlParameter ControlID="InstructorsGridView" Name="PersonID" PropertyName="SelectedDataKey.Value"

            Type="Int32"/&gt;

    &lt;/SelectParameters&gt;

&lt;/asp:ObjectDataSource&gt;

&lt;asp:GridView ID="CoursesGridView" runat="server" DataSourceID="CoursesObjectDataSource"

    AllowSorting="True" AutoGenerateColumns="False" SelectedRowStyle-BackColor="LightGray"

    DataKeyNames="CourseID"&gt;

    &lt;EmptyDataTemplate&gt;

        &lt;p&gt;No courses found.&lt;/p&gt;

    &lt;/EmptyDataTemplate&gt;

    &lt;Columns&gt;

        &lt;asp:BoundField DataField="CourseID" HeaderText="ID" ReadOnly="True" SortExpression="CourseID"/&gt;

        &lt;asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title"/&gt;

        &lt;asp:TemplateField HeaderText="Department" SortExpression="DepartmentID"&gt;

            &lt;ItemTemplate&gt;

                &lt;asp:Label ID="GridViewDepartmentLabel" runat="server" Text='&lt;%# Eval("Department.Name") %&gt;'&gt;&lt;/asp:Label&gt; 

           &lt;/ItemTemplate&gt;

        &lt;/asp:TemplateField&gt;

    &lt;/Columns&gt;

&lt;/asp:GridView&gt;

   重新運作該頁面,選擇一個instructor,你将看到一個該instructor的所有課程courses清單。

ASP.NET站點部署:部署Code-Only更新

  <b>部署到測試環境</b>

  部署到測試環境,隻需要簡單的重複步驟one-click釋出就行了。

  Solution Configurations下拉菜單裡選擇Test build配置,在Publish profile下拉菜單裡選擇Test,然後點選Publish Web。

ASP.NET站點部署:部署Code-Only更新

  如果你自定義了你的Visual Studio使這些工具欄的這些設定不能用的話,請選擇配置管理器Configuration Manager裡的Active solution configuration(從Build菜單裡選擇Configuration Manager),在Publish Web對話框裡選擇Test profile(Solution Explorer裡右鍵 ContosoUniversity項目,選擇Publish) ,點選Publish。

  點選Publish以後,Visual Studio會在Output視窗顯示部署成功的資訊。

ASP.NET站點部署:部署Code-Only更新

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

ASP.NET站點部署:部署Code-Only更新

  之後,你需要做一些回歸測試(測試新修改不會對其它的功能産生影響)。本章節你可以忽略這個步驟直接部署到生産環境。

  <b>預防生産環境重新初始化資料庫</b>

  在生産環境中第一次部署之後,已經有了真實使用者資料,如果修改以後還使用以前的部署設定的話,那就會把資料庫重新初始化,真實的使用者資料将被清空。由于SQL Server Compact資料庫是存放在App_Data檔案夾下的檔案,是以更新部署隻需要防止App_Data不背重新部署就行了。

  打開Project Properties視窗,點選Package/Publish Web頁籤。確定Configuration下拉菜單的選項是Active (Release)或Release。選擇Exclude files from the App_Data folder,然後儲存關閉。

ASP.NET站點部署:部署Code-Only更新

  確定測試的配置也是一樣的:修改Configuration為Test然後選擇Exclude files from the App_Data folder。

  <b>部署更新期間防止使用者通路</b>

  你這次的修改是一個非常簡單的修改,如果修改很多的話,那在部署結束之前使用者還在通路的話,将會看到不可思議的錯誤結果。可以使用app_offline.htm檔案來防止這種情況。當你在根目錄上次名稱為app_offline.htm 檔案的時候,IIS将自動讓該站點停運,并且顯示該頁面。是以,合理的部署步驟是,上傳app_offline.htm,部署,部署結束以後删除app_offline.htm 檔案。

  Solution Explorer裡右鍵解決方案(不是項目),選擇New Solution Folder。

ASP.NET站點部署:部署Code-Only更新

  檔案夾命名為SolutionFiles,在裡面建立一個名為app_offline.htm的頁面,替換成如下内容:

&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;

&lt;head&gt;

    &lt;title&gt;Contoso University - Under Construction&lt;/title&gt;

&lt;/head&gt;

&lt;body&gt;

  &lt;h1&gt;Contoso University&lt;/h1&gt;

  &lt;h2&gt;Under Construction&lt;/h2&gt;

  &lt;p&gt;The Contoso University site is temporarily unavailable while we upgrade it. Please try again later.&lt;/p&gt;

&lt;/body&gt;

&lt;/html&gt;

   你可以用FTP上傳app_offline.htm檔案或者使用控制台裡的File Manager工具上傳。本章節使用File Manager來示範。

  打開控制台選擇File Manager,選擇contosouniversity.com,然後選擇wwwroot,點選Upload。

ASP.NET站點部署:部署Code-Only更新

  在Upload File對話框選擇app_offline.htm檔案,然後上傳。

ASP.NET站點部署:部署Code-Only更新
ASP.NET站點部署:部署Code-Only更新

  通路網站,這時候你看到首頁顯示的是app_offline.htm頁面的内容了。

ASP.NET站點部署:部署Code-Only更新

  現在,可以安心地将程式部署到生産環境了。

  (該教程不更新部署的時候,在Publish profile裡應該選擇Leave Extra files on destination (do not delete)選項,如果不選,會删除生産環境所有不需要的檔案,是以部署之前,確定有一個app_offline.htm檔案的備份,因為可能在你想删除的時候Web Deploy已經将它删除了。)

  <b>部署到生産環境</b>

  在Solution Configurations下拉菜單,選擇Release build配置,并且Publish profile裡選擇Production,然後點選Publish Web。

ASP.NET站點部署:部署Code-Only更新

  Visual Studio将部署了修改後的程式,然後輸入消息到Output視窗。

ASP.NET站點部署:部署Code-Only更新

  在驗證是否是成功的部署之前,你需要先将app_offline.htm檔案删除。

  重新回到控制台的File Manager程式選擇contosouniversity.com-&gt;wwwroot,選擇app_offline.htm然後點選Delete删除。

ASP.NET站點部署:部署Code-Only更新

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

ASP.NET站點部署:部署Code-Only更新

  至此,你已經成功部署了一個沒有資料庫改變的更新程式。下一章節展示給你的是如何部署一個資料庫更新。

本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/735602,如需轉載請自行聯系原作者