可以使用 发布 工具导入发布设置,然后部署应用。 在本文中,我们将使用 IIS 的发布设置。
这些步骤适用于 ASP.NET 和 ASP.NET Core Web 应用程序。
备注
发布设置文件(*.publishsettings)不同于发布配置文件(*.pubxml)。 发布设置文件在 IIS 中创建,然后将其导入 Visual Studio。 Visual Studio 创建发布配置文件。
先决条件
Visual Studio 随 ASP.NET 和 Web 开发工作负载一起安装。 如果已安装 Visual Studio:
- 选择“帮助”“检查更新”,在 Visual Studio 中安装最新更新>。
- 选择“工具”“获取工具和功能”,添加工作负载>。
在您的服务器上,必须运行 Windows Server 2012 或更高版本,并且必须正确安装 IIS Web Server 角色(这是生成发布设置文件所必需的)(
.publishsettings)。 ASP.NET 4.5 或正确的 ASP.NET Core 版本也必须安装在服务器上。 本教程中的步骤已在 Windows Server 2022 和 IIS 10 中进行测试。若要安装 ASP.NET Core,请参阅 使用 IIS 在 Windows 上托管 ASP.NET Core。 对于 ASP.NET Core,请确保将应用程序池配置为使用 无托管代码,如本文中所述。
若要设置 ASP.NET 4.5,请参阅 在 IIS 8.0 中使用 ASP.NET 3.5 和 ASP.NET 4.5。
备注
Windows 上的 IIS 不支持生成发布设置。 但是,仍可以使用 Visual Studio 中的发布工具发布到 IIS。
在 Windows Server 上安装和配置 Web 部署
Web 部署提供其他配置功能,用于从 UI 创建发布设置文件。
备注
Web 平台安装程序于 22 年 7 月 1 日达到生命周期结束。 有关详细信息,请参阅 Web 平台安装程序 - 终止支持并停用产品/应用程序源。 可以直接安装 Web 部署 4.0 来创建发布设置文件。
如果尚未安装 IIS 管理脚本和工具,请立即安装。
转到“选择>Web 服务器(IIS)>管理工具的服务器角色,然后选择 IIS 管理脚本和工具 角色,单击 下一步,然后安装该角色。
需要脚本和工具才能生成发布设置文件。
请确保还安装 管理服务,并 IIS 管理控制台(可能已安装)。
在 Windows Server 上,下载 Web 部署 4.0。
运行 Web 部署安装程序,并确保选择“完全安装”而不是典型安装。
完成安装后,即可获取生成发布设置文件所需的组件。 (如果改为选择“自定义”,则会可以看到组件列表,如下图所示。)
(可选)通过打开 控制面板 > 系统和安全 > Windows 工具 > 服务来验证 Web 部署是否正常运行,并确保:
Web 部署代理服务 正在运行(旧版本中的服务名称不同)。
Web 管理服务 正在运行。
如果其中一个代理服务未运行,请重启 Web 部署代理服务。
如果 Web 部署代理服务根本不存在,请转到 控制面板 > 程序 > 卸载程序,找到 Microsoft Web 部署 <版本>。 选择“更改”安装,并确保对 Web 部署组件选择“将安装到本地硬盘”。 完成更改安装步骤。
在 Windows Server 上的 IIS 中创建发布设置文件
关闭并重新打开 IIS 管理控制台,以在 UI 中显示更新的配置选项。
在 IIS 中,右键单击 默认网站,选择 部署>配置 Web 部署发布。
如果未看到“部署”菜单,请参阅上一部分以验证 Web 部署是否正在运行。
在“配置 Web 部署发布”对话框中,检查设置。
单击 设置。
在 “结果 ”面板中,输出显示向指定用户授予访问权限,并在对话框中显示的位置生成文件扩展名
.publishsettings的文件。<?xml version="1.0" encoding="utf-8"?> <publishData> <publishProfile publishUrl="https://myhostname:8172/msdeploy.axd" msdeploySite="Default Web Site" destinationAppUrl="http://myhostname:80/" profileName="Default Settings" publishMethod="MSDeploy" userName="myhostname\myusername" /> </publishData>根据 Windows Server 和 IIS 配置,可以在 XML 文件中看到不同的值。 下面是有关所见值的一些详细信息:
属性中引用的
publishUrl文件是 Web 部署的动态生成的 HTTP 处理程序文件。 (出于测试目的,http://myhostname:8172通常也有效。publishUrl端口设置为端口 8172,这是 Web 部署的默认值。destinationAppUrl端口设置为端口 80,这是 IIS 的默认值。如果在后续步骤中,无法使用主机名从 Visual Studio 连接到远程主机,请测试服务器的 IP 地址来代替主机名。
备注
如果要发布到在 Azure VM 上运行的 IIS,则必须在网络安全组中打开 Web 部署和 IIS 的入站端口。 有关详细信息,请参阅 打开虚拟机的端口。
将此文件复制到运行 Visual Studio 的计算机。
在 Visual Studio 中导入发布设置并部署
如果计算机上的 Visual Studio 中打开有 ASP.NET 项目,则在该计算机的解决方案资源管理器中右键单击该项目,然后选择“发布”。
如果以前配置了任何发布配置文件,则会显示“发布”窗格。 单击“新建”或“创建新配置文件”。
选择该选项以导入配置文件。
在 发布 对话框中,单击 导入配置文件。
导航到在上一节中创建的发布设置文件的位置。
在 导入发布设置文件 对话框中,导航到并选择在上一部分中创建的配置文件,然后单击 打开。
单击 完成 以保存发布配置文件,然后单击 发布。
Visual Studio 将开始部署过程,“输出”窗口显示进度和结果。
如果收到任何部署错误,请单击“ 更多操作>编辑” 以编辑设置。 修改设置,然后单击 验证 以测试新设置。 如果未找到主机名,请尝试“ 服务器 ”和 “目标 URL ”字段中的 IP 地址而不是主机名。
中编辑设置
应用成功部署后,它应自动启动。
常见问题
首先,检查 Visual Studio 中的“输出”窗口以获取状态信息,并检查错误消息。 另外:
- 如果无法使用主机名连接到主机,请尝试改用 IP 地址。
- 请确保在远程服务器上打开所需的端口。
- 对于 ASP.NET Core,在 IIS 中,需要确保 DefaultAppPool 的应用程序池字段(IIS 10 上的 .NET CLR 版本)设置为 “无托管代码”。
- 验证应用中使用的 ASP.NET 版本是否与服务器上安装的版本相同。 对于应用,可以在 属性 页中查看和设置版本。 若要将应用设置为其他版本,必须安装该版本。
- 如果应用尝试打开,但会看到证书警告,请选择信任站点。 如果已关闭警告,则可以在项目中编辑 *.pubxml 文件并添加以下元素:
<AllowUntrustedCertificate>true</AllowUntrustedCertificate>。 此设置仅用于测试! - 如果应用未从 Visual Studio 启动,请在 IIS 中启动应用以测试它是否已正确部署。