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

.NET Core3.1迁移.NET7:UseEndpoints及RazorPages使用疑问

.NET 7中Razor Pages的正确配置(从.NET Core 3.1迁移)

问题背景

将.NET Core 3.1项目迁移到.NET 7时,原Program.cs中使用UseEndpoints嵌套注册路由的代码:

app.UseEndpoints(endpoints =>
{
    endpoints.MapRazorPages();

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

会收到提示:

Suggest using top level route registrations UseEndpoints

而Visual Studio提供的自动修复仅添加了_ =来抑制返回值未使用警告,并未采用.NET 7推荐的写法。

.NET 7中Razor Pages的正确操作方式

1. 确保服务注册

首先在Program.cs开头,确保已添加Razor Pages服务:

builder.Services.AddRazorPages();

2. 使用顶级路由注册(推荐写法)

.NET 6及以后引入了简化的路由注册模型,无需将路由配置嵌套在UseEndpoints委托中,直接在WebApplication实例(即app对象)上调用路由扩展方法即可:

var app = builder.Build();

// 先配置必要的中间件(如静态文件、路由中间件)
app.UseStaticFiles();
app.UseRouting();

// 直接注册Razor Pages路由
app.MapRazorPages();

// 同时注册控制器默认路由(如果项目还包含MVC控制器)
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

3. 原提示的含义

原提示建议的「顶级路由注册」,就是指这种直接调用app.MapRazorPages()的写法,替代原来嵌套在UseEndpoints里的方式。这种写法更简洁,也是.NET 6+官方推荐的路由配置方式。

4. 关于VS自动修复的说明

VS给出的修复代码只是处理了MapRazorPages()返回值未使用的警告(通过_ =丢弃返回值),但没有改变嵌套在UseEndpoints里的结构,所以并不是最优的迁移写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:01:35