news 2026/7/25 11:57:08

【c#】 Web Deploy一键发布,IIS部署全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【c#】 Web Deploy一键发布,IIS部署全流程

项目:ASP.NET Core 8.0 Web API
服务器:阿里云 Windows Server + IIS
部署方式:VS Web Deploy 一键发布


一、前置准备

1.1 本地环境

说明
项目框架.NET 8.0
开发工具Visual Studio
发布方式Web Deploy(直接推送到远程 IIS)

1.2 服务器环境

说明
操作系统Windows Server(阿里云)
公网 IPXXXX
Web 服务器IIS(已安装)

1.3 代码调整

Program.cs中 Swagger 原本只在开发环境启用:

// 修改前if(app.Environment.IsDevelopment()){app.UseSwagger();app.UseSwaggerUI();}// 修改后(去掉环境判断,生产也可见)app.UseSwagger();app.UseSwaggerUI();

二、服务器端安装与配置

2.1 安装 .NET 8 Hosting Bundle

下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0

注意:Hosting Bundle 不是独立板块,它在ASP.NET Core 运行时那一行的链接里,找 “Hosting Bundle” 这个小链接。

安装时选最新版 8.0.29,安装完成后重启 IIS:

iisreset

2.2 安装 IIS 管理服务(Management Service)

Web Deploy 需要管理服务来接收远程发布请求。

Install-WindowsFeatureWeb-Mgmt-Service

2.3 安装 Web Deploy

下载:https://www.iis.net/downloads/microsoft/web-deploy

Web Deploy 4.0,安装时选择更改(Change),务必勾选所有子组件(尤其是IIS Deployment Handler),否则 msdeploy 处理器不会注册到 IIS。

2.4 启用远程连接

  1. 打开 IIS 管理器
  2. 左侧选中服务器节点(最顶层)
  3. 双击管理服务
  4. 先点右侧停止
  5. 勾选启用远程连接
  6. 端口保持默认8172
  7. 点右侧应用启动

2.5 放行端口

Windows 防火墙

添加入站规则,放行 TCP 端口81728080(站点端口)。

阿里云安全组

在阿里云控制台 → 安全组 → 入方向规则,添加:

端口协议用途
8080TCP站点访问
8172TCPWeb Deploy 远程发布

2.6 创建 IIS 站点

设置项
站点名称JpaasPrinter
物理路径C:\inetpub\wwwroot\JpaasPrinter
绑定端口8080
应用程序池 .NET CLR 版本无托管代码
托管管道模式集成

2.7 设置文件夹权限

站点物理路径(如C:\inetpub\wwwroot\JpaasPrinter)需要让 IIS 应用池账户读取。

右键文件夹 → 属性 → 安全 → 编辑 → 添加:

IIS AppPool\JpaasPrinter

权限勾选:读取和执行列出文件夹内容读取


三、VS 发布配置

3.1 配置发布配置文件

右键项目 →发布Web 服务器 (IIS)Web 部署

字段填写内容
服务器XXX
站点名称JpaasPrinter(必须和 IIS 里完全一致)
目标 URLhttp://XXX:8080
用户名Administrator
密码服务器 Administrator 密码

3.2 允许不受信任的证书

Windows Server 的 IIS 管理服务使用自签名证书,VS 默认不信任。两种修复方式:

方式 A(推荐):编辑Properties\PublishProfiles\IISProfile.pubxml,添加:

<AllowUntrustedCertificate>true</AllowUntrustedCertificate>

方式 B:在 VS 发布页面 → 更多连接选项 → 勾选允许不受信任的证书


四、遇到的问题及解决

问题 1:找不到 Hosting Bundle 下载

现象:.NET 8.0 下载页面没有独立叫 “Hosting Bundle” 的板块。

原因:Hosting Bundle 的下载链接藏在ASP.NET Core 运行时那一行的小字链接里。

解决:展开某个版本号,在"ASP.NET Core 运行时"行中找到 “Hosting Bundle” 链接,或直接访问:
https://dotnet.microsoft.com/zh-cn/download/dotnet/thank-you/runtime-aspnetcore-8.0.29-windows-hosting-bundle-installer


问题 2:IIS 里看不到管理服务

现象:装了 Web Deploy 但 IIS 管理器里没有出现"管理服务"功能。

原因:管理服务(Management Service)是 IIS 的一个独立功能,不随 Web Deploy 安装。

解决

Install-WindowsFeatureWeb-Mgmt-Service

问题 3:VS 验证连接报 404

现象

Web 部署任务失败。远程服务器返回了错误 (404) 未找到。

原因(两个可能):

  1. 管理服务"启用远程连接"没打勾
  2. Web Deploy 的 msdeploy.axd 处理器没注册到 IIS

排查

# 检查 WMSVC 服务和 IIS 管理服务状态Get-ServiceWMSVCGet-WindowsFeatureWeb-Mgmt-ServiceTest-NetConnection8.135.xx.xx-Port 8172# 检查 msdeploy 处理器Get-WebHandler|Where-Object{$_.Name-like"*msdeploy*"}

解决

  • 如端口不通 → 检查防火墙和安全组
  • 如管理服务没启用 → IIS 管理器里勾选"启用远程连接"
  • 如处理器丢失 → 修复 Web Deploy 安装,确保勾选 IIS Deployment Handler

问题 4:证书验证失败

现象

ERROR_CERTIFICATE_VALIDATION_FAILED

原因:IIS 管理服务使用自签名证书,VS 不信任。

解决:在发布配置文件中添加:

<AllowUntrustedCertificate>true</AllowUntrustedCertificate>

五、发布时的行为说明

文件替换机制

  • ASP.NET Core 使用影子复制:IIS 启动时会从publish目录复制文件到临时目录再执行,原始文件不被锁定。
  • 发布时 Web Deploy 可以直接覆盖原始文件,不会被"文件使用中"拦住。
  • 覆盖完成后,ASP.NET Core Module 检测到文件变化,自动回收旧进程,用新文件重新启动。

站点是否停机

发布过程中站点不会主动停止。文件替换后新进程自动启动,切换期间可能 1-3 秒请求失败(502/503),流量小的项目无需在意。


六、快速参考

常用命令

# 重启 IISiisreset# 检查管理服务状态Get-ServiceWMSVC# 检查 IIS 站点列表Get-Website|Select-ObjectName,PhysicalPath,State# 检查端口连通性Test-NetConnection8.135.xx.xx-Port 8172Test-NetConnection8.135.xx.xx-Port 8080# 检查 Web Deploy 处理器Get-WebHandler|Where-Object{$_.Name-like"*msdeploy*"}

端口清单

端口协议用途需放行位置
8080TCP网站访问阿里云安全组 + Windows 防火墙
8172TCPWeb Deploy 发布阿里云安全组 + Windows 防火墙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 11:56:55

跨平台图形计算革命:VcXsrv如何重塑Windows下的Linux GUI应用生态

跨平台图形计算革命&#xff1a;VcXsrv如何重塑Windows下的Linux GUI应用生态 【免费下载链接】vcxsrv VcXsrv Windows X Server (X2Go/Arctica Builds) 项目地址: https://gitcode.com/gh_mirrors/vc/vcxsrv 在当今混合技术栈的开发环境中&#xff0c;Windows开发者面临…

作者头像 李华
网站建设 2026/7/25 11:54:34

AI领导力教练系统:技术架构与应用实践

1. 项目背景与行业痛点在企业管理领域&#xff0c;领导力发展一直是组织人才战略的核心课题。传统领导力培训存在三大典型问题&#xff1a;一是培训效果难以量化评估&#xff0c;二是缺乏个性化指导&#xff0c;三是后续行为改变难以追踪。根据某国际咨询机构2022年调研数据显示…

作者头像 李华
网站建设 2026/7/25 11:54:03

提示工程:提升AI应用效果的核心方法论

1. 为什么提示工程决定AI应用成败 上周调试对话机器人时&#xff0c;我输入"帮我总结会议记录"&#xff0c;AI却返回了冗长的转录文本。当改为"用三点归纳会议核心决策&#xff0c;并标注执行负责人"后&#xff0c;立刻得到了结构化输出。这个案例让我意识…

作者头像 李华
网站建设 2026/7/25 11:53:14

基于OpenVINO的多智能体旅行规划系统设计与实现

1. 项目背景与核心价值 每次和朋友规划旅行路线时&#xff0c;最头疼的就是七嘴八舌的讨论——有人想看博物馆&#xff0c;有人想逛美食街&#xff0c;还有人坚持要去网红打卡点。传统的聊天群组讨论效率低下&#xff0c;信息碎片化严重&#xff0c;最后往往变成"随便吧&q…

作者头像 李华
网站建设 2026/7/25 11:53:02

pdfh5.js:在移动端实现原生级PDF浏览体验的技术方案

pdfh5.js&#xff1a;在移动端实现原生级PDF浏览体验的技术方案 【免费下载链接】pdfh5 项目地址: https://gitcode.com/gh_mirrors/pdf/pdfh5 在移动互联网时代&#xff0c;PDF文档的移动端浏览体验已成为企业数字化转型的关键环节。pdfh5.js作为一款专为移动端优化的…

作者头像 李华
网站建设 2026/7/25 11:51:19

AI叙事经济学:如何用机器学习提升用户转化率

1. 叙事经济学与AI议程设置的融合价值 去年参与某金融科技项目时&#xff0c;我曾遇到一个有趣现象&#xff1a;当我们在用户调研中描述"智能投顾能像私人银行家一样24小时守护您的资产"时&#xff0c;转化率比单纯罗列算法准确率的数据高出47%。这正是叙事经济学在现…

作者头像 李华