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

ASP.NET Core 7中Razor Pages与MVC混合开发路由404问题求助

解决ASP.NET Core 7中MVC与Razor Pages共存时根路径404问题

问题根源

MVC与Razor Pages的路由注册顺序、规则优先级会影响请求匹配逻辑,默认MVC路由不会自动映射到Razor Pages的Index.cshtml,若中间件注册顺序错误,也会导致路由无法正确解析。

具体解决方案

1. 调整Program.cs的服务与路由注册顺序

确保Razor Pages的服务和路由注册在MVC之前,修改后的核心代码如下:

var builder = WebApplication.CreateBuilder(args);

// 先添加Razor Pages服务
builder.Services.AddRazorPages();
// 保留原有MVC服务配置
builder.Services.AddControllersWithViews();

// 保留Swagger相关配置
builder.Services.AddSwaggerGen();

var app = builder.Build();

// 保留环境相关中间件配置
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();
app.UseAuthorization();

// 先注册Razor Pages路由
app.MapRazorPages();
// 再注册MVC默认路由
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

2. 检查Razor Pages首页配置

确认Pages/Index.cshtml的@page指令位于页面最顶部,这是Razor Pages识别页面的核心标记:

@page
@model IndexModel
@{
    ViewData["Title"] = "Home";
}

<h1>Razor Pages 首页</h1>

3. 显式绑定根路径(可选)

若上述调整后仍无法匹配,可直接将根路径映射到Razor Pages首页:

  • 方式一:在Program.cs中添加显式路由映射
app.MapGet("/", () => Results.Redirect("/Index"));
  • 方式二:在Index.cshtml的@page指令中指定根路由
@page "/"
@model IndexModel

重要说明

以上配置完全保留MVC的所有功能,仅通过调整路由注册顺序、补充规则实现MVC与Razor Pages共存,无需移除任何MVC相关代码或服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:52:33