如何通过Azure DevOps将.NET 5网站部署到本地内网IIS?
需求可行性确认
完全可以通过Azure DevOps配置实现该需求,核心是通过自托管代理打通Azure DevOps云服务和内网环境的通路,无需将内网IIS服务器暴露到公网。
具体实现步骤
1. 部署Azure DevOps自托管代理
- 选择一台和目标IIS服务器网络互通的内网设备(可以直接用IIS服务器本身,也可以用同内网的其他机器),在设备上安装Azure DevOps自托管代理
- 代理安装完成后会主动和Azure DevOps云端建立出站连接,不需要开放内网入站端口,符合内网安全要求
2. 配置CI构建流水线
- 新建适配.NET 5的构建流水线,依次添加NuGet还原、项目构建、发布打包任务,最终输出可直接部署的.NET 5站点构建包
- 构建阶段可以使用微软官方托管代理,也可以使用前述的内网自托管代理,只要代理能正常拉取代码仓库即可
3. 配置CD发布流水线
- 新建发布流水线,关联上一步输出的构建产物
- 发布阶段的运行代理明确选择你部署的内网自托管代理
- 按需添加IIS部署任务:
- 如果目标IIS已经提前创建好站点,直接使用
IIS Web App Deploy任务,配置好站点名称、应用程序池、构建包路径参数即可完成部署 - 如果需要自动创建站点,可以额外添加
IIS Management类任务,提前完成站点、应用池的自动化配置
- 如果目标IIS已经提前创建好站点,直接使用
- 由于自托管代理在内网环境,可直接访问同内网的IIS服务器,无需额外做公网端口映射
常见注意事项
- 运行自托管代理的系统账号需要有目标IIS服务器的操作权限,如果是部署到代理所在机器的本地IIS,给账号添加
IIS Administrators组权限即可 - 目标IIS服务器需要提前安装.NET 5运行时,以及对应版本的ASP.NET Core托管捆绑包,否则IIS无法正常运行.NET 5站点
- 部署前可以添加自定义预部署脚本,先停止目标站点、备份历史版本,避免文件占用导致部署失败
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

