ASP.NET Core+Vue.js调用AdminController的GET接口返回404如何解决
404问题排查解决步骤
按优先级依次检查以下配置:
1. 检查服务注册与路由映射配置
确认你的项目启动文件(.NET 6+ 是Program.cs,旧版本是Startup.cs)中已经正确注册控制器服务并配置了路由映射:// .NET 6+ Program.cs 示例 var builder = WebApplication.CreateBuilder(args); // 必须注册控制器服务,MVC项目用AddControllersWithViews builder.Services.AddControllersWithViews(); var app = builder.Build(); // 静态文件、HTTPS跳转、路由等中间件按顺序配置 app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); // 必须映射控制器路由 app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();如果是纯API项目,可替换为
builder.Services.AddControllers()和app.MapControllers()。2. 检查请求路径匹配问题
打开浏览器F12开发者工具的「网络」标签,点击按钮后查看实际发出的请求完整URL:- 如果项目部署在子应用/虚拟目录下(比如站点根路径是
http://domain.com/myapp),开头带/的绝对路径/Admin/Items会直接请求根域名,导致路径错误,可修改为相对路径:axios.get('Admin/Items') - 确认请求路径没有拼写错误,路由匹配默认不区分大小写,但尽量和你配置的
/Admin/Items保持一致。
- 如果项目部署在子应用/虚拟目录下(比如站点根路径是
3. 检查中间件或权限拦截
- 查看
AdminController或GetItems方法上是否加了[Authorize]等权限验证特性,未登录的情况下请求会被拦截,部分项目配置了401跳转至登录页,如果登录页不存在也会返回404。 - 检查有没有自定义中间件在请求进入控制器层之前就拦截并返回了404。
- 查看
4. 检查路由冲突问题
确认项目中没有其他控制器或接口配置了相同的路由模板[HttpGet("Admin/Items")],重复路由会导致匹配优先级混乱,出现404。5. 检查控制器与方法配置
确认GetItems方法是public访问修饰符,当前你的写法是正确的,如果误写为private/protected会导致路由无法匹配到Action。
内容的提问来源于stack exchange,提问作者Thamra Devps
相关产品推荐
相关产品推荐

