使用 Visual Studio 或 Visual Web Developer 通过SQL Server Compact部署 ASP.NET Web 应用程序:部署Code-Only更新 - 第 8 个,共 12 个

作者 :Tom Dykstra

下载初学者项目

本系列教程介绍如何使用 Visual Studio 2012 RC 或 Visual Studio Express 2012 RC for Web) 包含SQL Server Compact数据库的 ASP.NET Web 应用程序项目部署 (发布。 如果安装 Web 发布更新,也可以使用 Visual Studio 2010。 有关该系列的简介,请参阅 系列中的第一个教程

有关演示 Visual Studio 2012 RC 版本后引入的部署功能的教程,演示如何部署除 SQL Server Compact 以外的SQL Server版本,并演示如何部署到Azure 应用服务 Web 应用,请参阅使用 Visual Studio ASP.NET Web 部署

概述

初始部署后,维护和开发网站的工作将继续进行,不久之后,你将需要部署更新。 本教程将引导你完成将更新部署到应用程序代码的过程。 此更新不涉及数据库更改;在下一教程中,你将看到部署数据库更改的不同内容。

提醒:如果在完成本教程时收到错误消息或某些内容不起作用,请确保检查故障排除页面

进行代码更改

作为应用程序更新的简单示例,你将向 “讲师 ”页面添加所选讲师教授的课程列表。

如果运行“ 讲师 ”页,你会注意到网格中有 “选择”链接 ,但它们除了使行背景变为灰色外,不会执行任何其他操作。

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 一键发布 工具栏。

在“ 视图 ”菜单中,选择“ 工具栏 ”,然后选择“ Web 一键发布”。

Selecting_One_Click_Publish_toolbar

“解决方案资源管理器”中,选择“ContosoUniversity”项目。

单击 “Web 一键发布 ”工具栏,选择“ 测试 发布”配置文件,然后单击“ 发布 Web ” (箭头指向左右) 的图标。

Web_One_Click_Publish_toolbar

Visual Studio 部署更新的应用程序,浏览器会自动打开到主页。 运行“讲师”页并选择一个讲师以验证是否已成功部署更新。

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 一键发布 ”工具栏中,选择 “生产 发布”配置文件,然后单击“ 发布 Web”。

Visual Studio 部署更新的应用程序,并将浏览器打开到站点主页。 将显示 app_offline.htm 文件。 必须先删除 app_offline.htm 文件,然后才能进行测试以验证部署成功。

返回到控制面板中的 文件管理器 应用程序。 选择“ contosouniversity.com ”和 “wwwroot”,选择“ app_offline.htm”,然后单击“ 删除”。

Deleting_app_offline.htm

在浏览器中,打开公共站点中的“讲师”页,并选择一个讲师以验证是否已成功部署更新。

Instructors_page_with_courses_Prod

现已部署不涉及数据库更改的应用程序更新。 下一教程介绍如何部署数据库更改。