ASP.NET Core 8 含文化参数与区域的路由配置问题求助
解决ASP.NET Core 8带文化参数的Area路由问题
一、MVC Admin区域路由修复
调整路由注册顺序
路由匹配按注册顺序执行,需确保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?}");确认控制器的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
相关产品推荐
相关产品推荐

