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

ASP.NET Core 8 含文化参数与区域的路由配置问题求助

解决ASP.NET Core 8带文化参数的Area路由问题

一、MVC Admin区域路由修复

  1. 调整路由注册顺序
    路由匹配按注册顺序执行,需确保Area路由优先于公共MVC路由注册,同时补充公共区域的路由配置:

    // 注册Area专用路由
    app.MapControllerRoute(
        name: "areas",
        pattern: "{culture:length(2)}/{area:exists}/{controller=Home}/{action=Index}/{id?}");
    
    // 注册公共区域MVC路由
    app.MapControllerRoute(
        name: "default",
        pattern: "{culture:length(2)}/{controller=Home}/{action=Index}/{id?}");
    
  2. 确认控制器的Area标记
    确保Admin区域下的控制器都添加了[Area("Admin")]特性,示例:

    [Area("Admin")]
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
    }
    

二、Identity Razor Pages路由修复

Identity默认基于Razor Pages实现,需单独配置其路由模板以支持culture参数:

app.MapRazorPages()
    .AddRazorPagesOptions(options =>
    {
        // 为Identity区域所有页面添加culture前缀路由规则
        options.Conventions.AddAreaFolderRouteModelConvention("Identity", "/", model =>
        {
            foreach (var selector in model.Selectors)
            {
                var originalTemplate = selector.AttributeRouteModel.Template;
                selector.AttributeRouteModel.Template = "{culture:length(2)}/" + originalTemplate;
            }
        });
    });

该配置会自动为所有Identity页面的路由添加{culture:length(2)}前缀,确保/en/Identity/Account/Login这类URL可正常匹配。

三、验证中间件逻辑

检查RedirectToDefaultCultureMiddleware的实现,确保重定向逻辑不会破坏Area路由的路径结构,比如重定向时需保留Area相关的路径片段。

四、测试验证

完成配置后,测试以下URL是否正常访问:

  • MVC Admin区域:localhost:1234/en/Admin/Home/Index
  • Identity区域:localhost:1234/en/Identity/Account/Login
  • 公共MVC区域:localhost:1234/en/Home/Index

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:17:32