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

自定义Microsoft Identity UI账户控制器后登出遇404问题求助

Azure B2C OpenIdConnect自定义MyAccountController后登出404问题排查解决

针对你遇到的自定义MyAccountController后登出404问题,可按以下步骤排查修复:

1. 验证控制器区域与路由配置

确保自定义控制器正确标记区域特性,且方法路由匹配请求路径:

  • 控制器类必须添加[Area("MicrosoftIdentity")]特性,因为Microsoft Identity的默认路由绑定到该区域下。
  • SignOutAsync方法需明确指定HTTP动词(如[HttpGet]),因为点击链接发起的是GET请求,示例代码:
[Area("MicrosoftIdentity")]
public class MyAccountController : Controller
{
    [HttpGet]
    public async Task<IActionResult> SignOutAsync()
    {
        // 执行标准登出逻辑,指定重定向地址
        return SignOut(
            new AuthenticationProperties { RedirectUri = "/" },
            CookieAuthenticationDefaults.AuthenticationScheme,
            OpenIdConnectDefaults.AuthenticationScheme);
    }
}

2. 核对身份验证服务配置

检查Program.cs/Startup.cs中的身份验证配置,确保登出路径指向自定义控制器:

  • 若配置了Cookie认证的登出路径,需与自定义控制器的路由一致:
builder.Services.ConfigureApplicationCookie(options =>
{
    options.LogoutPath = "/MicrosoftIdentity/MyAccount/SignOutAsync";
});
  • 确认AddMicrosoftIdentityWebApp未覆盖默认登出路由,保持与自定义控制器路径匹配。

3. 修正视图中的登出链接

避免硬编码URL,使用ASP.NET Core的标签助手生成正确链接,确保区域、控制器、动作名称正确:

<a asp-area="MicrosoftIdentity" asp-controller="MyAccount" asp-action="SignOutAsync">登出</a>

4. 排查路由冲突

检查全局路由规则或其他区域路由,确保没有覆盖/MicrosoftIdentity/MyAccount/SignOutAsync路径的规则,导致请求无法匹配到自定义控制器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:42:26