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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:15:03