ASP.NET Core 5 Razor Pages如何不删Index页、不跳转修改默认首页?
问题原因
你当前使用的AddPageRoute方法只是为指定页面新增额外的路由映射,并没有修改站点根路径/的默认路由指向,因此根路径访问时依然会优先匹配项目默认的Index页面。另外你提供的代码中存在拼写错误,页面路径/Identity/TaskSelecttion多写了一个字母t,也会导致路由匹配失效。
正确配置方案
在ConfigureServices中修改Razor Pages配置,将根路由(空字符串)映射到你的目标页面即可,代码如下:
services.AddMvc().AddRazorPagesOptions(options => { // 空字符串代表站点根路径,将其映射到Identity目录下的TaskSelection页面 options.Conventions.AddPageRoute("/Identity/TaskSelection", ""); });
如果你使用的是.NET 6+的极简顶层语句模板,配置方式如下:
var builder = WebApplication.CreateBuilder(args); // 注册Razor Pages服务 builder.Services.AddRazorPages() .AddRazorPagesOptions(options => { options.Conventions.AddPageRoute("/Identity/TaskSelection", ""); }); var app = builder.Build(); // 中间件配置保持正常即可,不要遗漏Razor Pages端点映射 app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.Run();
验证注意事项
- 配置后清理项目缓存,重新编译后再测试,避免旧编译产物导致配置不生效
- 现有Index页面可以正常保留,根路径访问不会再匹配到Index页面,Index页面仍可通过
/Index路径正常访问 - 如果项目存在其他同级别路由规则冲突,将本条路由配置放在其他冲突规则之前即可,路由匹配按注册顺序优先执行先注册的规则
内容的提问来源于stack exchange,提问作者DooDoo
相关产品推荐
相关产品推荐

