You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Web API部分控制器返回404状态码故障排查求助

核心问题定位

从给出的IIS日志来看,请求在MAP_REQUEST_HANDLER阶段就返回404,错误码0x80070002说明IIS直接把API请求当成静态文件去磁盘查找,根本没有转发到ASP.NET处理管道,所以控制器逻辑完全不会触发。

排查步骤

  • 首先对比部署后站点的Web.config和本地正常运行版本的差异,重点检查<handlers>节点:
    确认负责处理Web API的System.Web.Http.Handlers.HttpControllerHandler映射规则没有丢失,也没有被错误的转换规则(Release配置转换、部署任务变量替换)修改。Umbraco 7默认会对API路由做特殊处理,要确认对应路径的handler优先级高于静态文件handler。
  • 检查Azure App Service的托管管道模式:
    登录Azure门户进入对应App Service的「配置」-「常规设置」,确认托管管道模式为集成模式,如果被误改为经典模式会导致部分API路由无法被识别。
  • 验证打包发布的完整性:
    从Kudu控制台下载部署后的完整站点文件,在本地IIS中直接用该部署包搭建站点测试:
    • 如果本地可复现404问题,说明是Azure DevOps管道打包环节出错:检查发布任务配置,确认控制器所在的类库没有被排除发布,编译输出的dll没有缺失。
    • 如果本地无法复现,说明是Azure App Service环境配置问题:检查站点下是否存在和故障API路径同名的静态文件/文件夹,比如API路由为/api/order/xxx的情况下,如果站点根目录存在api/order文件夹,IIS会优先匹配静态资源路径,找不到对应文件就直接返回404。
  • 检查Umbraco路由忽略规则:
    确认故障API的路由前缀已经被加入Umbraco的路由忽略列表,没有被Umbraco的内容路由拦截。

内容的提问来源于stack exchange,提问作者Armino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:45:04