0

0

ASP.NET Core怎么自定义路由 ASP.NET Core路由配置方法

月夜之吻

月夜之吻

发布时间:2026-01-21 05:01:35

|

114人浏览过

|

来源于php中文网

原创

ASP.NET Core 路由通过中间件和端点路由实现,自定义主要在 Program.cs 或 Startup.cs 中配置;常用 MapControllerRoute(MVC)、MapRazorPages(Razor Pages)、MapFallbackToController/MapFallback(兜底路由),支持模板占位符、默认值、约束及手动端点注册。

asp.net core怎么自定义路由 asp.net core路由配置方法

ASP.NET Core 的路由不是靠 web.config 或全局注册表,而是通过中间件和端点路由(Endpoint Routing)机制实现的,自定义路由主要在 Program.cs(.NET 6+)或 Startup.cs(.NET 5 及更早)中配置,核心是控制请求 URL 如何映射到控制器、页面或处理程序。

使用 MapControllerRoute 自定义 MVC 路由

这是最常用的方式,适用于带控制器和动作方法的 Web API 或 MVC 应用。你可以在 AddControllersWithViews()AddMvc() 后,用 MapControllerRoute 添加命名路由模板:

  • 路由模板支持占位符,如 {controller}/{action}/{id?}id? 表示可选参数
  • 可以设置默认值,比如把首页固定指向 Home/Index
    routes.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
  • 支持多段自定义,例如博客文章路由:
    routes.MapControllerRoute("blog-post", "posts/{year:int}/{month:int}/{slug}", new { controller = "Posts", action = "Detail" });
    这样访问 /posts/2024/04/my-first-post 就会调用 PostsController.Detail(2024, 4, "my-first-post")

使用 MapRazorPages 自定义 Razor Pages 路由

Razor Pages 默认按文件路径路由(如 /About 对应 Pages/About.cshtml),但你可以用 MapRazorPages() 并配合 PageRouteAttribute 或约定式重写:

  • 在 PageModel 类上加 [PageRoute("/news/{id:int}")],即可将 /news/123 映射到该页面
  • 也可在 Program.cs 中用 endpoints.MapRazorPages().AddPageRoute("/news/{id:int}", "/News/Details"); 做动态映射
  • 注意:Razor Pages 的路由优先级低于 Controller 路由,若两者冲突,需调整注册顺序或使用约束

使用 MapFallbackToController 或 MapFallback 处理未匹配路由

当所有显式路由都不匹配时,可以用“兜底路由”统一处理,比如 SPA 应用需要把前端路由交由客户端接管:

LongCat AI
LongCat AI

美团推出的AI对话问答工具

下载
  • endpoints.MapFallbackToController("Index", "Home"); 把所有未匹配请求转给 Home 控制器的 Index 动作
  • endpoints.MapFallbackToFile("index.html"); 直接返回静态文件(适合 Vue/React 的 history 模式)
  • 注意:这类兜底路由必须放在 MapControllerRoute 等具体路由之后,否则会提前截断其他匹配

高级:用 IEndpointRouteBuilder 手动添加端点或自定义约束

如果需要更精细控制(如权限判断、动态路由生成、多租户子域名),可以绕过常规路由模板,直接操作 IEndpointRouteBuilder

  • endpoints.MapGet("/api/status", async context => { await context.Response.WriteAsync("OK"); }); 注册极简端点
  • 自定义路由约束继承 IRouteConstraint,比如只允许偶数 ID:
    public class EvenIdConstraint : IRouteConstraint { public bool Match(...) => id % 2 == 0; }
    然后在路由中使用:{id:even}(需先注册约束服务)
  • 也可以用 MapDynamicControllerRoute() 实现运行时解析控制器名(如多租户场景)

基本上就这些。路由配置的关键在于理解端点路由的执行顺序、约束优先级和 MVC/Razor Pages 的差异。不复杂但容易忽略细节,比如路由顺序、参数类型约束、大小写敏感性(默认不敏感),调试时可启用 app.UseRouting(); app.UseEndpoints(...) 日志或查看 EndpointDataSource 实例确认实际注册结果。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

178

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

213

2025.12.18

html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

616

2023.06.14

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

655

2023.06.21

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

470

2023.07.31

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.08.01

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2895

2023.08.11

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

506

2023.08.11

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 6.8万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 1.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号