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

ASP.NET Core 6 MVC如何配置默认路由?(替代Core2的UseMvcWithDefaultRoute)

在ASP.NET Core 6中替代ASP.NET Core 2的UseMvcWithDefaultRoute()配置

你之前的错误在于把中间件配置放到了MapGet的端点处理里,这完全不对——MapGet是用来定义最小API的单个端点,而UseMvcWithDefaultRoute是配置MVC路由的中间件,两者不能这么混用。

ASP.NET Core 6采用了顶级语句的简化写法,把原来Startup.cs里的ConfigureServices和Configure逻辑合并到了Program.cs中,具体替换步骤如下:

  1. 先注册MVC服务
    在Program.cs里,WebApplication.CreateBuilder之后,添加MVC控制器和视图的服务注册:
builder.Services.AddControllersWithViews();
  1. 替换默认端点,配置MVC路由
    把原来的app.MapGet("/", () => "Hello World!")(或者你写的错误代码)删掉,换成MVC的默认路由配置,效果和原来的UseMvcWithDefaultRoute()完全一致:
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

如果你习惯用UseMvcWithDefaultRoute(),也可以直接写:

app.UseMvcWithDefaultRoute();

但官方现在更推荐用MapControllerRoute的写法。

完整的Program.cs示例

var builder = WebApplication.CreateBuilder(args);

// 注册MVC控制器和视图服务
builder.Services.AddControllersWithViews();

var app = builder.Build();

// 环境相关配置(可选,和原Startup逻辑一致)
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles(); // 启用静态文件支持,比如CSS、JS
app.UseRouting();
app.UseAuthorization();

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

app.Run();

注意事项

  • 如果你的项目是用最小API模板创建的,可能需要手动安装Microsoft.AspNetCore.Mvc.ViewFeatures NuGet包,才能使用控制器和视图功能。
  • 确保你已经创建了对应的控制器(比如HomeController)和视图文件,否则访问时会出现404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:50:17