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

.NET 7+Angular项目Authorization中间件异常解决求助

解决.NET 7+Angular项目中Authorization中间件异常问题

问题根源

你的异常是由于中间件顺序错误以及缺失显式授权服务配置导致的,.NET对中间件执行顺序有严格要求,错误的顺序会导致授权元数据无法被正确处理。

修复步骤

1. 显式添加授权服务

在builder.Services.AddControllersWithViews();之前或之后,添加授权服务注册:

builder.Services.AddAuthorization();

虽然AddControllersWithViews会隐含添加基础授权服务,但显式注册可以避免潜在的配置缺失问题,尤其是当你需要自定义授权策略时。

2. 修正中间件执行顺序

将中间件调整为以下正确顺序(核心是遵循"路由→身份验证→授权"的流程):

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseHsts();
}

app.UseHttpsRedirection();

// 先处理静态文件请求,无需经过CORS/授权
app.UseStaticFiles();

// 启用路由匹配,必须在身份验证/授权之前
app.UseRouting();

// 应用CORS策略,需在路由之后、授权之前
app.UseCors("MyOrigin");

// 身份验证中间件,需在路由之后、授权之前
app.UseAuthentication();

// 授权中间件,需在身份验证之后、端点映射之前
app.UseAuthorization();

// 映射控制器路由
app.MapControllerRoute(
    name: "default",
    pattern: "{controller}/{action=Index}/{id?}");

app.MapFallbackToFile("index.html");

app.Run();

顺序说明

  • UseStaticFiles:优先处理静态资源(如Angular打包后的文件),避免不必要的CORS/授权检查
  • UseRouting:先确定请求对应的端点,后续中间件才能针对端点应用身份验证和授权规则
  • UseCors:必须在UseRouting之后,确保只对匹配到的API端点应用CORS策略
  • UseAuthentication:先完成用户身份校验,为授权提供身份信息
  • UseAuthorization:基于已验证的身份,检查用户是否有权限访问目标端点

验证修复

重新启动项目,调用UploadNewPmFile接口,确认异常消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:34:52