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

.NET Core 6 Web应用中Razor Pages与控制器能否共存及配置方法?

在.NET Core 6 Razor Pages项目中启用控制器

完全可以在同一个.NET Core 6 Razor Pages项目中同时使用MVC控制器和Razor Pages,你遇到的访问失败问题,是因为默认创建的Razor Pages项目没有启用控制器路由支持,只需要简单配置即可解决。

配置步骤

1. 修改Program.cs启用控制器服务和路由

默认的Razor Pages项目只注册了Razor Pages相关服务,需要添加控制器服务注册,并在中间件中映射控制器路由:

var builder = WebApplication.CreateBuilder(args);

// 同时注册Razor Pages和MVC控制器服务
builder.Services.AddRazorPages();
builder.Services.AddControllers(); // 新增此行,添加控制器服务

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

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

app.UseRouting();

app.UseAuthorization();

// 映射控制器路由和Razor Pages路由(顺序不强制,但都要添加)
app.MapControllers(); // 新增此行,启用控制器路由
app.MapRazorPages();

app.Run();

2. 创建符合规范的控制器

确保你的控制器类满足以下要求:

  • 类名以Controller结尾(比如TestController)
  • 继承自Controller或ControllerBase(需要返回视图用Controller,仅返回数据用ControllerBase)
  • 示例控制器代码:
using Microsoft.AspNetCore.Mvc;

namespace YourProjectNamespace.Controllers;

public class TestController : Controller
{
    // 默认访问路径:/Test 或 /Test/Index
    public IActionResult Index()
    {
        // 返回文本内容,也可以返回视图(需创建Views/Test/Index.cshtml)
        return Content("Test控制器的Index方法");
    }

    // 访问路径:/Test/Hello
    public IActionResult Hello()
    {
        return Content("Hello from Test Controller");
    }
}

3. 路由规则说明

  • 默认路由遵循/{控制器名(去掉Controller后缀)}/{动作名},比如TestController的Index方法对应/Test或/Test/Index
  • 可以通过[Route]特性自定义路由,比如:
[Route("my-test")]
public class TestController : Controller
{
    [Route("say-hi")]
    public IActionResult Hello()
    {
        return Content("自定义路由访问成功");
    }
}

此时访问/my-test/say-hi即可触发该方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:31:17