Web Deploy 4部署ASP.NET Core 6报404,Web Deploy 3.6正常求解决
Web Deploy 4部署ASP.NET Core 6 HTTP 404问题解决指南
针对你遇到的Web Deploy 4在Windows Server 2019/2022部署ASP.NET Core 6时,VS2022发布报HTTP 404但Web Deploy 3.6可正常运行的问题,结合多台服务器测试经验,整理以下排查和修复步骤:
1. 确认Web Deploy 4的完整安装
- 卸载现有Web Deploy 4,手动下载Web Deploy 4.0 for Hosting Servers完整安装包,选择
Complete安装类型(通过PowerShell启用的IIS功能可能仅安装了核心组件,缺少部署所需的服务端模块)。 - 安装完成后,验证
Web Deploy Agent Service(MsDepSvc)和Web Management Service(WMSVC)均处于运行状态,启动类型设为Automatic。
2. 检查IIS处理程序映射与端点注册
- 打开IIS管理器,进入服务器级别的
Handler Mappings,确认存在Microsoft.Web.Deployment.DeploymentHandlerFactory映射:路径为*,允许的请求方法为GET, HEAD, POST。 - 在PowerShell中执行以下命令,验证Web Deploy端点是否正确注册:
若返回空,需重新运行Web Deploy安装包的修复功能,或手动添加该映射。Get-ChildItem IIS:\Sites\Default Web Site\Handlers | Where-Object { $_.Name -match "WebDeploy" }
3. 验证WMSVC配置与权限
- 打开WMSVC配置文件
C:\Windows\System32\inetsrv\config\applicationHost.config,确认已加载Web Deploy模块:<system.webServer> <modules> <add name="WebDeployModule" /> </modules> </system.webServer> - 确保WMSVC服务账户(默认
LocalSystem)对网站根目录、Web Deploy安装目录(C:\Program Files\IIS\Microsoft Web Deploy V4\)拥有读取和执行权限。
4. 修正VS 2022发布配置
- 在VS发布配置中,将服务URL手动指定为
https://<服务器IP>:8172/msdeploy.axd,避免仅填写服务器地址导致端点解析错误。 - 确认站点名称与IIS中创建的站点完全一致(注意大小写和路径,比如
Default Web Site/YourApp需准确匹配)。
5. 排查SSL与防火墙细节
- 若使用自签名SSL证书,需在VS所在开发机器上,将服务器证书导入
受信任的根证书颁发机构,避免SSL握手失败导致的404伪装错误。 - 确认防火墙规则不仅允许入站8172端口,同时允许出站HTTPS流量(Web Deploy发布是双向通信)。
6. 启用详细日志定位问题
- 开启Web Deploy详细日志:
- IIS管理器→服务器节点→
Logging,设置日志格式为W3C,勾选所有字段。 - 修改
C:\Program Files\IIS\Microsoft Web Deploy V4\msdeploy.exe.config,添加日志配置:<system.diagnostics> <switches> <add name="Microsoft.Web.Deployment" value="4" /> </switches> </system.diagnostics> - 重启WMSVC服务,重新发布后查看
C:\inetpub\logs\LogFiles\W3SVC1下的日志,定位404请求的具体路径,确认是否为端点未映射或权限问题。
- IIS管理器→服务器节点→
内容的提问来源于stack exchange,提问作者g.pickardou
相关产品推荐
相关产品推荐

