使用 Visual Studio 或 Visual Web 开发人员通过 SQL Server Compact 部署 ASP.NET Web 应用程序:部署仅限代码的更新 - 12 中的 8 个

作者: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 App 服务 Web 应用,请参阅使用 Visual Studio ASP.NET Web 部署。

概述

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

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

进行代码更改

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

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

Instructors_page

现在,你将添加在单击“选择”链接时运行的代码,并显示所选讲师教授的课程列表。

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>

运行页面并选择讲师。 你会看到该讲师教授的课程列表。

Instructors_page_with_courses

将代码更新部署到测试环境

部署到测试环境是再次运行一键发布的简单事项。 若要使此过程更快,可以使用 Web One Click Publish 工具栏。

“视图 ”菜单中,选择 “工具栏 ”,然后选择“ Web One Click Publish”。

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.htmHTML 页面。 将现有内容替换为以下标记:

<!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.comwwwroot,选择 app_offline.htm,然后单击“ 删除”。

Deleting_app_offline.htm

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

Instructors_page_with_courses_Prod

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