从 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 服务器角色(需要生成发布设置文件 (*.publishsettings))。 该服务器上还必须安装 ASP.NET 4.5 或 ASP.NET Core。 本教程中的步骤已在 Windows Server 2022 中进行了测试。

    备注

    Windows 上的 IIS 不支持生成发布设置。 不过,你仍可以使用 Visual Studio 中的“发布”工具发布到 IIS。

在 Windows Server 上安装和配置 Web 部署

Web 部署提供额外的配置功能,可实现从 UI 创建发布设置文件。

备注

Web 平台安装程序的生命周期已于 22/7/1 结束。 有关详细信息,请参阅 Web 平台安装程序 - 终止支持并停用产品/应用程序源。 可以直接安装 Web 部署 4.0 以创建发布设置文件。

  1. 如果尚未安装“IIS 管理脚本和工具”,请立即安装。

    转到“选择服务器角色”>“Web 服务器(IIS)”>“管理工具”,然后选择“IIS 管理脚本和工具”角色,点击“下一步”,然后安装角色

    Install IIS Management Scripts and Tools

    需要脚本和工具来生成发布设置文件。

    此外,请确保安装管理服务和 IIS 管理控制台(可能已安装)。

  2. 在 Windows Server 上,下载 Web 部署 4.0

  3. 运行 Web 部署安装程序,并确保选择“完全安装”而不是典型安装。

    完成完全安装后,即可获取生成发布设置文件所需的组件。 (如果改为选择“自定义”,则会可以看到组件列表,如下图所示。

    Screenshot showing Web Deploy 4.0 components

  4. (可选)通过打开“控制面板”>“系统和安全”>“管理工具”>“服务”来验证 Web 部署是否正确运行,然后确保:

    • “Web 部署代理服务”正在运行(旧版本中的服务名称不同)。

    • “Web 管理服务”正在运行。

    如果某个代理服务未运行,请重新启动“Web 部署代理服务”。

    如果 Web 部署代理服务根本不存在,请转到“控制面板”>“程序”>“卸载程序”,查找“Microsoft Web 部署 <版本>。 选择“更改”安装,并确保对 Web 部署组件选择“将安装到本地硬盘”。 完成更改安装步骤。

在 Windows Server 上的 IIS 中创建发布设置文件

  1. 关闭并重新打开 IIS 管理控制台以在 UI 中显示更新的配置选项。

  2. 在 IIS 中,右键单击“默认网站”,选择“部署”>“配置 Web 部署发布”

    Configure Web Deploy configuration

    如果看不到“部署”菜单,请参阅前面的部分来验证 Web 部署是否正在运行。

  3. 在“配置 Web 部署发布”对话框中,检查设置。

  4. 单击“设置”。

    在“结果”面板中,输出显示已为指定用户授予访问权限,并且已在对话框中显示的位置生成了具有 .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 的入站端口。 有关详细信息,请参阅打开虚拟机的端口

  5. 将此文件复制到运行 Visual Studio 的计算机上。

在 Visual Studio 中导入发布设置并进行部署

  1. 如果计算机上的 Visual Studio 中打开有 ASP.NET 项目,则在该计算机的解决方案资源管理器中右键单击该项目,然后选择“发布”。

    如果先前配置了任何发布配置文件,则“发布”窗格会显示。 单击“新建”或“创建新配置文件”。

  2. 选择该选项以导入配置文件。

    在“发布”对话框中,单击“导入配置文件”

    Choose Publish

  3. 导航到上一节中创建的发布设置文件的位置。

  4. 在“导入发布设置文件”对话框中,导航到在上一部分创建的配置文件并选择该文件,然后单击“打开” 。

    单击“完成”保存发布配置文件,然后单击“发布”。

    Visual Studio 开始执行部署过程,并且输出窗口将显示进度和结果。

    如果出现任何部署错误,请单击“更多操作”>“编辑”以编辑设置。 修改设置,然后单击“验证”以测试新设置。 如果找不到主机名,请尝试“服务器”和“目标 URL”字段中的 IP 地址而不是主机名

    Edit settings in the Publish tool

应用成功部署后,它应自动启动。

常见问题

首先,在 Visual Studio 的“输出”窗口中查看状态信息,并查看你的错误消息。 此外:

  • 如果无法使用主机名连接到主机,请尝试改用 IP 地址。
  • 确保远程服务器上已打开所需的端口。
  • 对于 ASP.NET Core,需要确保在 IIS 中将 DefaultAppPool 的应用程序池字段设置为“无托管代码” 。
  • 验证应用中使用的 ASP.NET 版本是否与服务器上安装的版本相同。 对于你的应用,你可在“属性”页面上查看和设置版本。 若要将应用设置为其他版本,必须安装该版本。
  • 如果应用尝试打开,但显示证书警告,请选择信任站点。 如果你已关闭警告,则可在项目中编辑 *.pubxml 文件,并添加以下元素:<AllowUntrustedCertificate>true</AllowUntrustedCertificate>。 此设置仅用于测试!
  • 如果在 Visual Studio 中无法启动应用,请在 IIS 中启动应用来测试它是否正确部署。