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

.NET 6升级后ASP.NET Core MVC路由异常问题求助

解决.NET6升级后ASP.NET Core MVC路由匹配异常问题

核心问题分析

  1. 命名路由名称不匹配:前端表单使用的路由名称是Resumes.Sections.SetTitle,但后端Action的[Route]特性指定的名称是Resumes.Home.SetTitle,名称不一致导致路由无法匹配。
  2. 端点路由参数校验逻辑变化:.NET6的端点路由会严格检查Action的所有参数是否能通过路由值提供,title是POST表单参数而非路由参数,但未标记为可选,导致路由生成时判定参数缺失,返回空URL。
  3. 路由配置冲突:同时禁用端点路由(EnableEndpointRouting = false)又调用app.UseRouting(),配置逻辑冲突,引发路由行为异常。

分步解决方案

1. 修正命名路由名称匹配

将前端表单的路由名称与后端Action的命名路由保持一致:

<form asp-route="Resumes.Home.SetTitle" asp-route-id="@Model.SectionId">            
    <input type="text" name="title" id="formchangetitle">           
</form>

2. 明确表单参数来源并标记可选

修改后端Action,用[FromForm]指定title来自表单提交,并设置默认值标记为可选,避免路由生成时将其判定为必需路由参数:

[HttpPost]
[AllowAnonymous]
[Route("[area]/{id:guid}/[action]", Name = "Resumes.Home.SetTitle")]
public async Task<IActionResult> SetTitle(Guid id, [FromForm] string title = null)
{
    // 业务逻辑代码
}

3. 调整路由配置,启用端点路由

.NET6推荐使用端点路由,移除禁用端点路由的配置,确保路由配置逻辑统一:

// 移除禁用端点路由的配置行,替换为标准MVC配置
builder.Services.AddControllersWithViews().AddNewtonsoftJson();

builder.Services.Configure<RouteOptions>(options =>
{
    options.AppendTrailingSlash = false;
    options.LowercaseUrls = true;
    options.ConstraintMap.Add("culture", typeof(LanguageRouteConstraint));
});

// 保留端点路由中间件
app.UseRouting();

// 添加区域路由配置(若应用使用Area)
app.MapControllerRoute(
    name: "areaRoute",
    pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

// 保留默认路由
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.UseAuthorization();
// 确保控制器路由映射在授权中间件之后
app.MapControllers();

4. 验证Url.RouteUrl调用

如果使用Url.RouteUrl,确保传入的路由名称正确,且仅提供路由模板所需的参数(id),不需要传入title:

var url = Url.RouteUrl("Resumes.Home.SetTitle", new { id = Model.SectionId });

额外注意事项

  • 确认控制器已标记[Area("Resumes")],确保[area]占位符能正确匹配区域名称。
  • 清理冗余的路由配置代码,避免多个路由规则互相干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:32:38