Angular搭配.NET 5应用迁移至.NET 6时Area路由失效返回404问题
.NET 6 Area属性路由404问题修复方案
核心原因
.NET 6 针对Web API路由规则、中间件执行顺序的默认逻辑有变更,加上配置的冗余/顺序错误导致路由匹配失效。
修复步骤
修正Program.cs中间件顺序(最高概率触发问题)
90%以上的Angular+.NET项目迁移后API 404都是因为回退路由位置错误,直接替换为以下正确配置,删掉你之前加的UseEndpoints区域路由配置:var builder = WebApplication.CreateBuilder(args); // 必须注册控制器服务 builder.Services.AddControllers(); // 原项目有跨域、身份认证的配置请在这里补充注册 var app = builder.Build(); // 静态文件服务放在最前 app.UseStaticFiles(); // 路由中间件必须放在授权、端点映射之前 app.UseRouting(); // 授权中间件顺序不能错 app.UseAuthorization(); // 先映射API控制器,再配置Angular回退路由 app.MapControllers(); // 回退路由必须放在所有端点配置的最后,否则会拦截所有API请求 app.MapFallbackToFile("index.html"); app.Run();移除冗余的约定路由配置
你的控制器已经标记了[ApiController]和[Route]属性路由,[ApiController]特性强制要求API控制器使用属性路由,你添加的MVC约定路由对API控制器完全不生效,直接删除即可。排查授权拦截导致的伪404
你的基类控制器加了全局[Authorize],如果迁移后身份认证服务(如JWT、Cookie认证)的注册配置丢失,未携带有效身份的请求会被拦截,若你同时配置了错误页重定向,会把原本的401/403状态码转为404。可以临时给测试Action添加[AllowAnonymous]验证是否为授权拦截导致的问题。
内容的提问来源于stack exchange,提问作者GregoryHouseMD
相关产品推荐
相关产品推荐

