.NET访问/api/tab接口提示无匹配HTTP资源及对应控制器问题
排查及解决步骤
- 确认控制器继承类型
Web API控制器必须继承System.Web.Http.ApiController,不能继承MVC专用的System.Web.Mvc.Controller,你可以直接对比可正常访问的FooterController的继承声明,核对TabController的继承逻辑即可。如果写成MVC的Controller,Web API路由系统是无法识别的。 - 检查类的基础配置
- 确认
TabController类的访问修饰符为public,非公开类无法被路由扫描逻辑识别 - 确认类名严格遵循
[名称]Controller的命名规则,不能漏掉Controller后缀,也不能出现拼写错误 - 确认
TabController的命名空间和FooterController处于同一层级,如果你是手动移动文件到Controllers目录,没有同步修改命名空间,也会导致路由扫描不到对应类
- 确认
- 检查特性路由冲突
如果TabController或其内部接口方法加了[Route]、[RoutePrefix]这类特性路由注解,确认注解内容没有和默认路由冲突,比如错误设置了额外的前缀会导致/api/tab无法匹配。 - 确认部署生效
代码修改后需要重新编译项目,将bin目录下新生成的dll同步到IIS站点目录,重启对应站点的应用池后再测试访问。
注:你提到的
Views/Tab/Index.cshtml是MVC页面路由使用的文件,和Web API接口完全无关,该文件是否存在不影响接口路由匹配,无需针对该文件做调整。
内容的提问来源于stack exchange,提问作者jmath412
相关产品推荐
相关产品推荐

