用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署概述

本主题提供需要发布任务的概述(部署) Visual Studio Web 应用程序项目到其他服务器可以访问Internet的应用程序。

本主题适用于以下产品:

本主题包含以下各节:

  • 典型的部署方案

  • 基本的部署任务

  • 在Visual Studio中配置的数据库部署

  • 其他部署任务

  • 备份和还原

列出的某些任务此处仅适用于 Web 应用程序项目。 有关如何部署网站项目的信息,请参见 用于 Visual Studio 和 ASP.NET 的 Web 部署内容映射

典型的部署方案

您可以使用 一键式发布 or a 部署软件包部署 Web 应用程序项目:

  • 一键式发布是指让您直接从Visual Studio IDE部署通过单击按钮在Visual Studio的函数。 Visual Studio连接到目标服务器,复制到其中的项目文件,以及执行其他部署任务。

  • web部署包是包含用于部署所需的全部信息的.zip文件。 您创建包从命令行或在Visual Studio中,使用命令行或IIS管理器,并且,必须在目标服务器上安装它。

使用哪些方法取决于方案和您的个人喜好问题。 一键式发布通常不实现持续集成(CI)开发过程的更小的组织而言是最好的选择。 您通常要部署到您的应用程序运行在共享宿主环境中或一个专用服务器上的托管公司。 (在共享宿主环境,一个服务器用于承载托管公司客户端的多线程的站点。)

典型的第三方托管部署方案

在企业环境中,通常将部署到您的公司的服务器,然后连接到Internet,因此,您通常实现CI处理。 它在生产之前,将部署应用程序通过测试的和临时环境提升。 在这些情况下可以使用一键式发布部署到测试环境,但是,对于进度传递给生成的不同环境,部署包通常使用。 因为它们可以集成到CI处理使用命令行创建和安装包,部署包对于业务方案适用。

企业 Web 部署的典型方案

在承载在这朵云的 Web 应用程序时 Windows azure,第三方承载和企业方案也适用。 在Windows azure,应用程序可以运行在共享宿主环境中或位于专用的虚拟机。

基本的部署任务

这是必须执行若要部署到第三方托管公司的基本任务:

  1. 设置与托管公司的帐户。

    有关承载支持从Visual Studio的自动部署的提供程序的信息,请参见 ASP.NET承载。 确保选择支持ASP.NET的版本您的web项目所面向的提供程序。

  2. 创建一个发布配置文件。

    发布配置文件为登录指定要部署到的服务器,凭据到服务器,数据库部署和其他选项。 托管公司发送您为发布配置文件所需的设置,在电子邮件或然后才能导入到Visual Studio的文件。

  3. 启动部署通过单击一键式发布处理按钮。

    发布 按钮在使用创建发布配置文件的 发布 Web 向导。 它还可在可以从Visual Studio的 视图工具栏 菜单中选择的 Web一键式发布 工具栏。

对于与此的泛型帮助,请参见 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目。 有关通过部署的端对端方案指导您从Visual Studio 12部分教程,请参见 对于承载提供程序的部署 ASP.NET网站。

备注

默认情况下,Visual Studio 2012 创建面向ASP.NET 4.5的web项目。如果要部署ASP.NET 4.5项目对于不支持ASP.NET 4.5的承载提供程序,应用程序不会运行。若要解决该错误,必须删除在服务器上部署的所有应用程序文件。有关更多信息,请参见 对于承载提供程序的部署:疑难解答

有关业务部署方案,请参见 在企业方案的部署的 Web 应用程序 ASP.NET网站的教程系列。 企业级部署指南 Visual Studio 2010 已编写并没有为 Visual Studio 2012进行更新。

在Visual Studio中配置的数据库部署

Visual Studio提供自动化的数据库部署三种方法:

  1. entity framework第一个代码迁移

  2. dbDacFx Web部署提供程序

  3. dbFullSql Web部署提供程序

这三个方法,当选择Web Deploy发布方法时,只能使用。 如果您使用其他发布方法,如FTP,文件系统,或者FPSE,必须处理数据库部署在Visual Studio之外。 请参见以下资源有关如何手动部署SQL Server数据库的信息:

Dd394698.collapse_all(zh-cn,VS.110).gifentity framework第一个代码迁移

在entity framework 4.3版中,Microsoft引入 第一个代码迁移。 第一个代码迁移自动对数据模型的增量更改以及传播到数据库的这些更改过程。 在首次代码的早期版本中,每次更改了数据模型,因此,您通常使entity framework删除并重新创建数据库。 这不是一个问题在开发过程中,因为测试数据轻松地重新创建,但是,在生产经常需要更新数据库架构,而不删除该数据库。 迁移函数首先使代码更新数据库,而不删除并重新创建它。 您可以先允许代码自动确定如何执行所需架构更改,也可以自定义更改的代码。 有关代码的引入第一个迁移,请参见 第一个代码迁移

Visual Studio会自动部署由第一个代码迁移管理的数据库处理。 在配置发布配置文件,则选中标记 **执行第一个代码迁移(在应用程序启动时运行)**的复选框:

Publish_Web_Settings_tab_with_cf_database_high

使用entity framework代码的第一个上下文选件类,此复选框可显示数据库应用程序访问。 若选择此选项时,部署过程将自动配置在目标服务器上应用程序Web.config文件,以便代码首先使用 MigrateDatabaseToLatestVersion 初始值设定项选件类。 下图所示的示例此设置类似于在Web.config文件中:

Web.config 中的 MigrateDatabaseToLatestVersion

执行第一个代码迁移 选项在目标Web.config文件也会部署过程中放入一个附加连接字符串:

Web.config 中的 DatabasePublish 连接字符串

代码用于创建数据库架构更改首先利用额外的连接字符串。 此连接字符串必须指定能够访问数据库的管理用户凭据。 由于代码用于架构更新首先使用单独的连接字符串,可以指定限制了应用程序连接字符串的权限的用户凭据。 有关更多信息,请 查看第一个代码迁移的自动更改Web.config 参见ASP.NET网站。

Visual Studio不执行任何与数据库在部署过程中。 当部署的应用程序访问数据库第一次在部署,代码后自动先创建数据库或更新数据库架构与最新版本。 如果应用程序执行迁移 Seed 方法,运行该方法时,将在数据库中创建后或在中更新架构。

有关如何在Visual Studio的第一个代码迁移部署的信息,请参见 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目 和当前准则系列 部署到承载提供程序使用Visual Studio的或visual Web开发人员的一个ASP.NET Web 应用程序

Dd394698.collapse_all(zh-cn,VS.110).gifdbDacFx Web部署提供程序

为了使用dbDacFx " Web部署数据库的部署提供程序,请选中标记在 发布 Web 向导的 更新数据库 的复选框。 此复选框用于SQL Server数据库显示不使用entity framework代码的第一个上下文选件类的应用程序访问:

Publish_Web_Settings_tab_with_non_cf_database_

在初始部署期间,dbDacFx提供程序在目标数据库中创建表和其他数据库对象与源数据库。 在后续部署,提供程序确定不同的源和目标数据库之间,因此,它更新目标数据库的架构与源数据库。 默认情况下,该提供程序不会对导致数据丢失所做的任何更改,例如,当表或列被删除。

此选项还允许您指定在部署期间,必须在目标数据库中要运行您的自定义SQL脚本。 例如,提供程序,在创建表后,可以运行自定义脚本以插入初始数据添加到表。 也可以运行自定义脚本以使无法自动完成的架构更改,因为它们会导致数据丢失。

此数据库部署方法需要Web deploy 3.0,并dbDacFx提供程序在目标web服务器上安装。 (将在目标数据库服务器不必安装。)

dbDacFx提供程序早于Windows vista SP2不与操作系统一起使用,例如Windows XP和Windows Server 2003。 对于在这些操作系统的数据库部署,请使用 dbFullSql Web部署提供程序。

有关如何部署数据库使用dbDacFx提供程序以及如何安装Web部署的信息3.0,并且目标web服务器上dbDacFx提供程序,请参见 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目

Dd394698.collapse_all(zh-cn,VS.110).gifdbFullSql Web部署提供程序

为了使用dbFullSql " Web部署提供程序,配置数据库在项目属性窗口的 打包/发布 SQL 选项的部署设置。 此数据库部署方法从Visual Studio 2010 SP1可用。 dbFullSql提供程序可以执行数据库架构的初始部署,因此,它可以选择部署数据以及模式。 此提供程序不执行增量部署的数据库。 如果您尝试使用此提供程序部署架构更新到现有数据库,部署失败,因为提供程序尝试创建已存在的表。

dbFullSql提供程序时应使用特定方案,仅当需要,传统的数据库部署方法,当您使用的是Windows XP或Windows Server 2003操作系统时。 有关如何配置使用dbFullSql提供程序的数据库部署的信息,请参见 项目属性 ->“包”/“发布 SQL”选项卡迁移到SQL Server ASP.NET网站。

其他部署任务

根据应用程序您的方案或功能,其他部署任务可能需要或可行。 这是某些列表的更常见部分:

  • 配置Web.config转换。

    应用程序的Web.config文件可能包含必须是不同的已部署的应用程序的设置。 例如,您通常会启用调试在开发过程中禁用到成品。 有关更多信息,请 Web.config文件转换 参见ASP.NET网站和 用于使用 Visual Studio 部署 Web 应用程序项目的 Web.config 转换语法

  • 指定应复制哪些文件和文件夹到目标服务器。

    默认情况下,Visual Studio部署所需的运行应用程序所需的文件。 此选项用于大多数方案适用于,但是,您可能有特殊要求。 例如,因此,如果这些文件只用于开发,您可能希望排除在App_Data文件夹中的数据库文件。 有关更多信息,请 项目配置属性 参见ASP.NET网站和 项目属性 ->“包”/“发布 Web”选项卡

  • 在目标服务器上设置文件夹权限。

    应用程序可能需要写入权限。您的某些项目文件夹。 例如,因此,如果应用程序允许用户上载文件,它需要对它保存上载文件的文件夹的写入。 您必须显式通常配置这些权限部署过程,或者在部署应用程序之后。 有关更多信息,请 将文件夹权限 参见ASP.NET网站上。

  • 预编译该项目。

    默认情况下,.aspx和.ascx页在 Web 应用程序项目尚未预编译。 相反,首次请求这些对象,它们被编译。 在庞大的应用程序,此过程可能导致可能明显网页在部署后首次请求细微的延迟。 有关 Web 应用程序项目的信息的生成和合并选项,以及如何指定这些字符,请参见 项目属性 ->“包”/“发布 Web”选项卡“高级预编译设置”对话框

  • 在部署期间,使应用程序脱机。

    在部署时,您可能不希望用户能够使用应用程序。 这通常是这样,当您部署数据库更新时,因为可能有运行不同步的与数据库的应用程序代码的风险。 有关如何暂时使应用程序脱机的信息,请参见。用于 Visual Studio 和 ASP.NET 的 Web 部署内容映射Making sure an application is off-line during deployment

  • 测试站点在环境中类似于生产在部署之前于生成。

    若要减少发现bug的可能性,在部署到生产后,可以在尽可能类似于生产环境的情况环境中通常测试应用程序。 为此,在中,在部署到成品服务器之前,可以部署到开发计算机上的IIS,到临时服务器,或者到测试帐户在承载提供程序。 有关更多信息,请 部署到IIS作为测试环境 参见ASP.NET网站。

  • 配置在Visual Studio UI中显示的部署设置。

    Visual Studio UI不显示可配置的所有部署设置。 例如,不能使用用户界面从部署中排除单个文件夹。 但是,可以通过编辑存储配置设置的文件执行此操作。 对于每个发布其中配置文件是可直接编辑的.pubxml文件。 如果要配置适用于所有部署设置发布配置文件,可以创建.wpp.targets文件。 有关更多信息,请参见如何:在 Visual Studio Web 项目中编辑发布配置文件 (.pubxml) 和 .wpp.targets 文件中的部署设置

  • 确保ASP.NET MVC的二进制文件复制到服务器。

    如果要部署到不支持ASP.NET MVC或您的目标版本它的承载提供程序,请确保在项目中安装了正确 MVC 3MVC 4 NuGet包。

  • 确保SQL Server compact 4.0的二进制文件复制到服务器。

    如果要部署到不支持SQL Server compact 4.0的承载提供程序,请确保在项目中安装了 SqlServerCompact NuGet包。 您必须在项目中还包括bin \ x86和bin \ amd64文件夹。 有关更多信息,请参见 部署SQL Server compact数据库

备份和还原

在将更新部署到现有网站之前,请创建回滚计划,以便可以还原应用程序到其原始状态,如果任何出现的错误。 考虑的一些事项包括:

  • 支持该站点和资源使用的任何代码。

    警告

    不要假定,通过部署到服务器您为项目创建备份。编译到程序集的源代码,在部署通常不复制到服务器。

  • 如果更新包括数据库更改,请创建取消回滚计划数据库更改。 您可能需要事先创建回滚脚本以防大小写。 可能还要考虑解决方法,如果任何数据输入了更改表在部署之后,但在回滚之前,或者,如果其他应用程序使用同一数据库。

  • 如果与其他应用程序的应用程序接口,创建指定要执行有关其回滚计划,如果必须将更新。

请参见

概念

用于 Visual Studio 和 ASP.NET 的 Web 部署内容映射