ASP.NET Core 3.1部署后点击登录跳转Azure AD B2C返回404问题求助
常见根因及修复方案
1. 修复Configure方法签名错误
你当前代码中Configure方法用了async void修饰,这是ASP.NET Core的高危错误写法:Configure是框架用来加载中间件的同步方法,async void会导致初始化过程中的异常被静默吞掉,身份验证中间件加载失败时不会抛出任何提示,/signin-oidc回调端点根本没完成注册,所以访问直接返回404。
修复方式:
- 将
public async void Configure改为public void Configure - 如果你在
Configure中有必须异步执行的初始化逻辑,把这部分逻辑移到Program.Main方法中,或者通过IHostedService实现异步初始化,禁止在Configure中直接写异步代码。
2. 配置反向代理头转发
Azure App Service是反向代理架构,默认不会把原始请求的协议、域名信息转发给后端ASP.NET Core应用,会导致应用生成的重定向地址、回调地址和实际线上环境不匹配。
修复方式:
在ConfigureServices中添加转发头配置:
services.Configure<ForwardedHeadersOptions>(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; // 清除默认限制,允许App Service的代理节点转发请求 options.KnownNetworks.Clear(); options.KnownProxies.Clear(); });
然后在Configure方法的最开头(比UseHttpsRedirection还要靠前)添加转发头中间件:
app.UseForwardedHeaders();
3. 显式指定回调路径避免配置冲突
你同时用了AddAzureADB2C扩展和手动配置OpenIdConnectOptions,可能出现配置覆盖导致默认回调路径丢失,直接在OpenIdConnectOptions的配置块中显式指定回调路径:
opt.CallbackPath = "/signin-oidc";
4. 验证重定向URI配置一致性
检查Azure AD B2C中注册的重定向URI,必须完全匹配线上实际请求的地址:
- 必须带
https://前缀 - 大小写完全匹配
- 末尾不能多斜杠,必须是
https://你的自定义域名/signin-oidc
内容的提问来源于stack exchange,提问作者ChampChris
相关产品推荐
相关产品推荐

