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

如何在ASP.NET Core 7 MVC中统一将所有路由(含区域和身份认证)转为小写?

解决ASP.NET Core路由转小写问题

确保路由配置顺序与正确性

在Program.cs中,需在添加控制器/页面服务之前完成路由选项配置,两种有效配置方式如下:

// 方式1:通过AddRouting直接配置
builder.Services.AddRouting(options =>
{
    options.LowercaseUrls = true;
    // 若需同时将查询字符串转为小写,可开启此行
    // options.LowercaseQueryStrings = true;
});
// 后续添加控制器服务
builder.Services.AddControllersWithViews();
// 方式2:通过Configure配置路由选项
builder.Services.Configure<RouteOptions>(options =>
{
    options.LowercaseUrls = true;
});
builder.Services.AddRouting();
builder.Services.AddControllersWithViews();

必须使用框架URL生成工具

如果视图或代码中是硬编码的链接(如<a href="/Admin/Home">),LowercaseUrls设置不会生效,必须使用框架提供的URL生成方法:

  • Razor视图中使用Url.Action:
<a href="@Url.Action("Home", "Admin")">后台首页</a>

或使用RouteLink:

@Html.RouteLink("后台首页", new { controller = "Admin", action = "Home" })
  • 控制器中生成URL:
var url = Url.Action("Home", "Admin");

检查端点路由配置

确认UseEndpoints配置未覆盖默认路由规则:

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

修正自定义路由属性

如果控制器或Action上使用了[Route]属性硬编码大写路径(如[Route("Admin/Home")]),需将属性路由改为小写:

[Route("admin/home")]
public IActionResult Home()
{
    return View();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:52:06