如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目
本主题介绍如何在以下产品中使用 一键式发布 发布(部署)Web 应用程序项目:
Visual Studio 2012
Visual Studio Express 2012 for Web
与 的Visual Studio 2010 Visual Studio Web发布更新
与 的Visual Web Developer 2010 Express Visual Studio Web发布更新
您可以部署到任何以下目标:
对于承载提供程序。
对于在开发计算机上的IIS作为一个测试环境。
到公司的内部网络上的服务器。
使用 发布 Web 向导,若要配置 Web 应用程序项目的部署在Visual Studio中,可以创建一个或多个 发布配置文件。 发布配置文件中指定要部署到的服务器,必需的凭据登录到服务器,部署的数据库和其他部署选项。 当您准备好发布时,可以选择要使用并单击 发布 按钮在向导或在 Web一键式发布 工具栏的配置文件。
部署网站通常需要除了创建配置文件之外的其他准备工作。 本主题不包括有关可能需要执行的其他任务的信息。 例如,指定生成和合并选项在 打包/发布 Web 选项,不在发布配置文件。 有关更多信息,请参见用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署概述。
创建发布配置文件
许多宿主提供程序提供可用于简化创建发布配置文件处理的一个.publishsettings文件。 如果使用.publishsettings文件,请确保您具有最新版本,则此开始之前。 (例如,因此,如果您最初创建了一个帐户,不用SQL Server数据库稍后添加的代码,您必须下载该.publishsettings的最新版本,以确保它包含连接字符串需要。)
创建发布配置文件
在 解决方案资源管理器,请右击该项目并选择 发布 打开 发布 Web 向导。
如果尚未创建任何配置文件,该向导在 配置文件 选项卡中打开。 否则,它会 预览 选项卡中打开。 在这种情况下,创建一个新的配置文件必须先单击 配置文件 选项。
注意到 配置文件 选项的 管理配置文件 按钮。 在创建了一个配置文件之后,可以使用此按钮重命名或删除其重命名为。
执行以下过程之一,具体取决于您是否具有一个.publishsettings文件:
通过导入.publishsettings文件创建配置文件
单击**“导入”**。
导入发布设置 对话框打开。
选择.publishsettings文件,然后单击 打开。
创建配置文件,而不.publishsettings文件
在的 选择或导入一个发布配置文件 下拉列表中,选择 <New …>,然后输入一个名称该配置文件在 新建配置文件 对话框。
配置连接选项
发布 Web 向导自动前进到 连接 选项。
如果使用了一个.publishsettings文件,此选项卡上的字段已填充。 在这种情况下,请跳过此过程和 验证连接。
配置连接选项
选择一个值。发布方法 列表。
因为它可以自动化大大小部署任务,Web Deploy为建议的发布方法。 但是,在此选择方案之前,请确保部署的承载提供程序或服务器支持Web部署。
如果选择Web部署,并且您本身是发布到测试的IIS计算机,则必须在计算机上具有管理权限,并且,Visual Studio必须运行在控制器模式。 (打开Visual Studio在控制器模式下,右击在Windows 开始 菜单的Visual Studio图标并选择 以管理员身份运行。)
如果选择Web部署,并且您本身是发布到web服务器,确保服务器为Web部署代理服务(MSDepSvc,远程代理服务)设置为,因此,您在目标服务器上具有管理权限。 有关如何设置目标服务器的信息,请参见 Web部署远程服务 Microsoft TechNet网站上。
屏幕快照和大多数本主题中的步骤假定,您选择了Web Deploy发布方法。 如果要部署到不支持Web的承载提供程序将部署,可以选择FTP。 在这种情况下,命令的某些以下步骤会有所不同。 服务 URL 和 站点/应用程序 字段中 目标位置 字段交换,则输入FTP或FTPS URL。 如果匿名登录,允许您不需要输入用户名和密码。 如果需要被动模式,请编辑发布配置文件(.pubxml)文件并更改 FtpPassiveMode 元素的值设置为 true。 有关如何编辑.pubxml文件的信息,有关被动模式的信息,请参见 FTP-Deployed Web Sites,和,请参见 如何:在 Visual Studio Web 项目中编辑发布配置文件 (.pubxml) 和 .wpp.targets 文件中的部署设置。
一个 发布方法 选项是 Web部署包。 如果要创建部署包,请参见 如何:在 Visual Studio 中创建 Web 部署包。
在 服务 URL 框中,输入Web Deploy可以使用发布应用程序的URL。
如果要发布到托管公司,该公司提供此值。 它可以是任何以下格式:
托管公司 URL(例如,contoso.com)
https://HostingCompanyURL (例如,https://contoso.com)
https://HostingCompanyURL:8172/msdeploy.axd (例如,https://contoso.com:8172/msdeploy.axd)
如果本身是发布到测试的IIS计算机,输入 localhost 或您的计算机的名称。
如果本身是发布到web服务器,请输入以下URL之一:
https://ServerName
http://服务器名称/msdeployagentservice
在 站点/应用程序 框中,输入IIS网站和应用程序的名称。
如果要发布到托管公司,该公司提供此值。 它通常是域名(例如,contoso.com)或域和应用程序名称(例如,contoso.com/MyApplication)。
如果本身是发布到测试的IIS计算机,也可以连接到您的内部网络上的服务器,请输入网站和应用程序名称,则会在 IIS 管理器。 例如,因此,如果要发布到IIS的默认网站,并且,如果应用程序名称为MyApplication,输入默认网站/myapplication "。
在 用户名 和 密码 框中,输入具有执行足够的权限在目标web服务器的部署任务的帐户凭据。
如果要发布到托管公司,该公司提供这些值。
如果不希望在每次提示您输入密码您发布,选择 保存密码 复选框。
密码在PublishProfiles文件夹的一.pubxml.user文件已加密并存储。 如果使用源代码管理,默认情况下该文件从源代码管理中排除。
如果希望Visual Studio中部署的应用程序的URL自动打开您的默认浏览器,在部署完成之后,输入URL。目标URL 框。
验证在连接选项卡上的设置
单击 验证连接 验证您能够建立与服务器的连接使用您输入的设置。
如果您看到 证书错误 对话框中,确保要发布到正确的URL (检查 服务 URL 和在 证书错误 对话框的服务器名称)。 如果设置是否正确,请选择 保存Visual Studio以后的会话的此证书,这样您就获得相同的错误消息,然后选择 接受证书。 (此错误意味着承载提供程序选择避免购买要部署的URL的SSL证书成本。 使用有效证书,如果您希望生成一个安全连接,请联系您的承载提供程序。)
如果Visual Studio无法生成连接,请确保没有从您的计算机防止连接(例如set代理或的firewall),然后重试。 如果仍无法进行连接、联系人承载提供程序或维护目标服务器的人员。
配置设置选项
在 连接 选项卡上,单击前进到 设置 选项的 下一步。
配置设置选项
在的 配置 下拉列表中,选择生成配置部署。
通常部署发布版本。 调试版本没有效地运行且通常处于选中状态,只有在部署到测试环境时,您将在该环境中需要调试。
如果要删除没有匹配的文件在计算机的web项目在目标服务器上的文件,选择 删除其他文件在目标 复选框。
警告
如果选择此选项,请确保您使用预览功能,以便文件要删除的您事先看到,在部署之前。所需的行为是Web Deploy将删除可以在您的项目已删除的目标服务器的文件。但是,在源文件夹和目标文件夹下的整个文件夹结构进行比较,所以,并且Web Deploy某些情况下可能删除不要移除的文件。
例如,因此,如果您有一个 Web 应用程序在服务器的子文件夹,当您将项目部署到根文件夹,子文件夹中删除。您可能有主站点中的一个项目。contoso.com 和博客上的另一个项目。contoso.com/blog。博客应用程序位于子文件夹中。如果选择 删除其他文件在目标,当您部署主站点,博客应用程序将被删除。
到另一个示例,您的App_Data文件夹可能会意外删除。某些数据库(如SQL Server compact存储在App_Data文件夹中的数据库文件。在后面的部署不想保留这样将数据库文件复制您在中选择 打包/发布 Web 选项的 排除App_Data 的初始部署之后。在执行后,因此,如果您有 删除其他文件在目标 时,您的数据库文件和App_Data文件夹中删除,下次发布。
在安装选项的配置数据库
设置 选项的 数据库 部分没有为FTP,文件系统显示,并且,FPSE发布方法。 如果选择了这些方法之一,则跳过下面的过程并手动部署数据库。 有关更多信息,请参见用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署概述。
如果选择了Web Deploy发布方法,您在项目中使用的每个数据库看到一项。 此图显示使用两个数据库的项目。
如果您的项目所使用的数据库缺少,请确保您具有的Web.config文件中的连接字符串。 设置 选项列表将确定的由Web.config文件中的连接字符串或者是由实体框架代码的第一个上下文选件类的数据库。
备注
如果清除 包括在“打包/发布 SQL”选项卡中配置的所有数据库 复选框,数据库中输入的部署在此处设置不起作用。请参见 项目属性 ->“包”/“发布 Web”选项卡。
执行中显示列表中的每个数据库的下列程序。
配置在安装选项的数据库
在连接字符串框中,选择或输入指向目标数据库的连接字符串。
组合框包含连接字符串在.publishsettings文件(如果使用的创建该配置文件),从其他线程将在项目的配置文件和从的数据库具有访问在 服务器资源管理器。 可以选择其中一个,手动输入连接字符串或者单击省略号打开 目标连接字符串 对话框。
如果连接字符串是由实体框架数据库或设计首先获取首先的数据库,不要指定连接字符串的完整entity framework版本示。 Visual Studio将使用您输入此处执行部署的连接字符串,则在部署的Web.config文件构造entity framework连接字符串中。
如果不希望访问由应用程序在运行时使用的连接字符串,清除 使用此连接字符串在运行时 复选框。
当 使用此连接字符串在运行时 复选框后,部署过程更改此数据库的连接字符串在部署的Web.config文件中对组合框中的值。 在大多数情况下是正确的选择,但是,在某些情况下可能希望应用程序连接到数据库使用受限权限。 在这种情况下,清除此复选框和创建更改在部署的Web.config文件中的连接字符串到的一个Web.config转换所需它是在运行时。 有关如何将Web.config转换的信息,请参见 Web.config文件转换 ASP.NET网站上。
如果使用entity framework代码的第一个上下文选件类访问数据库,可以使用 第一个代码迁移 部署数据库和更新到数据库架构。 为此,请选择 执行第一个代码迁移(在应用程序启动时运行)。
当您使用第一个代码迁移部署数据库时,未完成该数据库在实际部署过程。 但是,部署在目标网站处理更新Web.config文件,以便第一个代码迁移使用 MigrateDatabaseToLatestVersion 初始值设定项选件类。 当访问数据库的应用程序第一次在部署,迁移后自动创建数据库或更新数据库架构与最新版本。 如果应用程序执行迁移 Seed 方法,运行该方法时,将在数据库中创建后或更新架构。
备注
如果应用程序在中等信任在部署(为true的大多数第三方承载提供程序)的环境中运行,请确保使用entity framework 5版或更高版本。E-F 4.3和发行版本的E-F 5要求完全信任使数据库架构更新。在面向ASP.NET 4及更高版本的项目中使用E-F 5。
如果已经实现 DbMigrationsConfiguration 选件类,才能使用此选项。 如果错误消息指示 DbMigrationsConfiguration 选件类个,必须启用第一个代码迁移,才能完成配置数据库部署之前。
如果该项目实现多个 DbMigrationsConfiguration 有关上下文选件类类,则无法配置此数据库的部署在发布配置文件。 有关如何手动部署数据库的信息,请参见 第一个代码迁移。
在连接的凭据字符串您在连接字符串框中输入必须表示一个管理用户帐户。 此连接字符串来创建数据库,首次部署并更新数据库架构,在部署数据库更改时。 如果希望应用程序访问数据库在具有有限权限的运行时,清除 使用此连接字符串在运行时 复选框和创建指定连接字符串所需应用程序在运行时使用的一个Web.config转换。 有关更多信息,请 查看第一个代码迁移的自动更改Web.config 参见ASP.NET网站。
如果要部署SQL Server compact数据库,属性,并且,如果数据库的连接字符串在Web.config文件中,必须配置Web.config转换创建一个附加连接字符串。 它更新数据库架构时,请第一个代码将使用此连接字符串。 (如果不执行手动创建此连接字符串,Visual Studio会自动创建它,但是,自动创建的连接字符串具有错误的 providerName 值。)此转换的XML类似于以下示例:
<connectionStrings> <add name="[contextclassname]_DatabasePublish" connectionString="[connectionstring]" providerName="System.Data.SqlServerCe.4.0" xdt:Transform="Insert"/> </connectionStrings>
通过使用迁移,如果不需要部署代码的第一个数据库,请参见。用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署常见问题的 How do I deploy a Code First database without using Migrations?。
如果不使用第一个代码上下文选件类访问数据库,并且,如果它是SQL Server或SQL Server express数据库,并且,要与应用程序一起部署数据库,选择 更新数据库。
此选项使用dbDacFx Web部署提供程序。 在初始部署期间,数据库架构创建的。 在后续部署期间,目标数据库与源数据库进行比较,并且,更新目标数据库架构与源数据库。
数据在数据库表中未自动部署。 如果需要部署到目标数据库,创建一个自定义数据库脚本并将其配置为运行在部署期间,在 [自动更新架构] 脚本运行之后,如下面的步骤所述。
默认情况下,dbDacFx提供程序不会自动提交会导致数据丢失的架构更改,例如删除列或表。 如果提供程序检测会导致数据丢失的更改,部署失败,并且该原因在Visual Studio 输出 窗口中显示。 如果此操作,请创建一个自定义脚本执行所需的更新架构,并将其配置为运行,以 [自动更新架构] 脚本运行之前,如下面的步骤所述。 为运行脚本的替代,在发布该项目之前,在部署期间,则可以连接到 SQL Server 对象资源管理器 的目标数据库和交互地更新数据库。
如果要部署到托管公司,请确保该托管公司让Web deploy 3.0并在该服务器上安装dbDacFx提供程序。 如果要部署到公司网络上的web服务器,请使用下列链接安装Web deploy 3.0和web服务器的dbDacFx提供程序。
此软件只需要在目标web服务器,不在目标数据库服务器。 如果要部署到在开发计算机上的IIS您不必安装此软件默认情况下,因为它随 Visual Studio 2012、 Visual Studio Express 2012 for Web或 Visual Studio Web 发布更新。
在连接的凭据字符串您在连接字符串框中输入必须表示一个管理用户帐户。 此连接字符串来创建数据库,首次部署并更新数据库架构,在部署数据库更改时。 如果希望应用程序访问数据库在具有有限权限的运行时,清除 使用此连接字符串在运行时 复选框和创建指定连接字符串所需应用程序在运行时使用的一个Web.config转换。 有关更多信息,请 查看第一个代码迁移的自动更改Web.config 参见ASP.NET网站。
如果有多个数据库中的项目,但是,您已部署的应用程序只想使用数据库,您通常可以合并多个源数据库到一个目标数据库。 通过选择 更新数据库 并进入每个的相同目标连接字符串执行该源数据库。 可以将数据库,只要不对象名称冲突,例如相同在多个源数据库方面的表名。
如果选择了 更新数据库 在部署期间,因此,要运行自定义SQL脚本,请单击 配置数据库更新。
配置数据库更新 对话框打开。
使用 将SQL脚本 链接向上或向下添加脚本、箭头、更改它们的运行顺序和复选框来指定个列出的脚本在部署期间,是否将运行。
标记 [自动更新架构] 的脚本将自动生成,然后运行在部署过程中更新目标数据库的架构与源数据库。 可以指定自定义脚本之前运行,则,或者两个在自动脚本之前或之后运行。 在一个自定义脚本将添加之后,下图显示 配置数据库更新 对话框。
如果数据库是SQL Server express或在App_Data文件夹中的SQL Server compact数据库文件,并且,如果您不希望将文件复制到目标服务器,打开 项目属性 窗口的 打包/发布Web选项 并选择 从App_Data文件夹中排除文件 复选框。 确保在 打包/发布 Web 选项选定的生成配置,若选择此选项是用于部署指定在 发布 Web 向导的 设置 选项相同的一个。
如果数据库是SQL Server compact数据库,则可能还需要确保,数据库引擎部署。 有关更多信息,请 部署SQL Server compact数据库 参见ASP.NET网站上。
预览更改和发布项目
在完成配置所有数据库,单击前进到 预览 选项的 下一步。
预览更改和发布项目
如果要查看列表文件将复制并从承载提供程序已删除的预览,单击 启动预览。
在短等待,文件列表中出现一个选项之后。
首次发布,需要运行应用程序的所有文件复制到承载提供程序。 在发布更新,因此,只有已更改的文件复制。 (除Web.config文件中:Visual Studio无法预测哪些更改可能由转换,并且Web部署参数,它始终这样将Web.config文件复制。)如果选择了 删除其他文件在目标 选项,检查预览列表尤其重要,在发布之前。
如果您为数据库选择了 更新数据库,并且希望找出将对该数据库,请单击该数据库右侧显示的 预览数据库 链接。 (不能预览部署使用entity framework第一个代码迁移。)的更改数据库预览 对话框显示在目标数据库中运行的脚本。 如果数据库大,它可以采用一分钟或更长此预览的会出现。
当您准备部署项目时,请单击 发布。 (请务必检查在 用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署概述 的信息确定是否有需要先执行的其他部署任务。)
如果您尚未验证连接,在配置了 连接 选项,您可能会发现 证书错误 对话框。 有关更多信息,请参见 验证在连接选项卡上的设置。
当部署过程完成后,输出 窗口指示部署是否成功。
如果输入 目标URL 的值在 连接 选项,则默认浏览器对该URL打开在部署成功后。
如果部署失败,用于错误消息请参见 错误列表 窗口。 有关疑难解答的资源,请参见 用于 Visual Studio 和 ASP.NET 的 Web 部署内容映射。