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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:57:03