从 IIS 获取发布设置并导入 Visual Studio
可以使用 发布 工具导入发布设置,然后部署应用。 在本文中,我们将使用 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 中进行测试。若要安装 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 部署安装程序,并确保选择“完全安装”而不是典型安装。
完成安装后,即可获取生成发布设置文件所需的组件。 (如果改为选择“自定义”,则会可以看到组件列表,如下图所示。)
(可选)通过打开 控制面板 > 系统和安全性 > 管理工具 > 服务,确保 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
属性中引用的 msdeploy.axd 文件是 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 的应用程序池字段设置为“无托管代码”。
- 验证应用中使用的 ASP.NET 版本是否与服务器上安装的版本相同。 对于应用,可以在 属性 页中查看和设置版本。 若要将应用设置为其他版本,必须安装该版本。
- 如果应用尝试打开,但会看到证书警告,请选择信任站点。 如果已关闭警告,则可以在项目中编辑 *.pubxml 文件并添加以下元素:
<AllowUntrustedCertificate>true</AllowUntrustedCertificate>
。 此设置仅用于测试! - 如果应用未从 Visual Studio 启动,请在 IIS 中启动应用以测试它是否已正确部署。