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

如何用app.UseEndpoints手动映射MicrosoftIdentity区域控制器路由

Microsoft Identity 区域控制器路由映射修正方案

你在手动配置认证模块控制器路由时,原有配置无法正确命中MicrosoftIdentity区域下的AccountController,按以下方式修改即可:

  • 给标注位置的路由规则补充区域、控制器的默认值配置
  • 将该专属路由移动到通用默认路由之前注册,避免被默认路由提前拦截

修正后的完整端点配置代码如下:

app.UseEndpoints(endpoints =>
{
    endpoints.MapRazorPages();

    // Microsoft Identity 认证控制器路由
    endpoints.MapControllerRoute(
        name: "MicrosoftIdentity",
        pattern: "MicrosoftIdentity/Account/{action}",
        defaults: new { area = "MicrosoftIdentity", controller = "Account" }
    );

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

你也可以使用框架内置的区域路由扩展方法简化配置,效果完全一致:

endpoints.MapAreaControllerRoute(
    name: "MicrosoftIdentity",
    areaName: "MicrosoftIdentity",
    pattern: "MicrosoftIdentity/Account/{action}",
    defaults: new { controller = "Account" }
);

错误原因说明

  • 最初编写的路由规则没有指定area路由值,框架默认会在非区域的控制器列表中查找AccountController,找不到就会返回404
  • 路由匹配是按注册顺序从上到下执行的,如果把专属区域路由放在通用默认路由后面,默认路由会优先匹配请求——默认路由没有区域约束,匹配时不会去区域目录下查找控制器,最终导致路由失效。

上述配置匹配的路径规则和控制器上标注的[area]/[controller]/[action]特性路由完全对齐,可正常支撑认证流程中的增量同意、条件访问等各类跳转需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:12:05