从 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 中进行了测试。
若要安装 ASP.NET Core,请参阅 使用 IIS 在 Windows 上托管 ASP.NET Core。 对于 ASP.NET Core,请确保将“应用程序池”配置为使用“无托管代码”,如文章中所述。
若要安装 ASP.NET 4.5,请参阅使用 ASP.NET 3.5 和 ASP.NET 4.5 的 IIS 8.0。
备注
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 中启动应用来测试它是否正确部署。