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

ASP.NET Core中控制器的自动检测与路由机制解析

ASP.NET Core 控制器自动发现与路由注册机制解析

核心原因:程序集扫描 + 控制器约定

当你在ConfigureServices中调用services.AddControllers()时,ASP.NET Core会自动触发程序集扫描逻辑:

  • 默认扫描当前应用程序的主程序集(即项目编译生成的DLL)
  • 自动识别符合以下任意“控制器约定”的类:
    • 继承自ControllerBase或Controller基类
    • 类名以Controller后缀结尾(比如你的SomeController)
    • 带有[ApiController]或[Controller]特性(即使类名无Controller后缀,带特性也会被识别)

路由注册的流程

  1. app.UseRouting():启用路由中间件,为后续的路由匹配建立基础
  2. endpoints.MapControllers():将之前扫描到的所有控制器中,通过[Route]特性定义的路由规则,自动注册到路由系统中,不需要手动引用每个控制器类

自定义扫描范围(可选)

如果你的控制器不在主程序集里,可以通过扩展方法指定额外的扫描程序集:

services.AddControllers()
    .AddApplicationPart(System.Reflection.Assembly.Load("Your.Other.Assembly.Name"));

关于“隐藏配置”的澄清

不需要额外的隐藏配置文件,默认的自动扫描是ASP.NET Core MVC/API框架的内置行为,属于约定大于配置的设计思路。官方文档中在「控制器发现」章节有明确说明,核心就是通过约定减少手动配置的工作量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:43:13