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

ASP.NET Core中builder.Services.AddControllers()的具体作用是什么?

builder.Services.AddControllers() 的作用及注释后仍可用的原因

核心作用

这行代码是ASP.NET Core用来给依赖注入容器注册控制器全套运行服务的关键调用,会把控制器工作必需的基础组件全部加入,包括:

  • 控制器实例的创建与生命周期管理
  • 请求数据到控制器方法参数的模型绑定
  • 数据验证(比如[Required]这类注解的校验逻辑)
  • 请求/响应的序列化格式化(默认的JSON处理就是靠它注册的服务支撑)
  • 过滤器体系的基础支持(授权、异常处理、日志等过滤器都依赖这里注册的服务)

为什么注释掉还能跑WeatherForecastController?

ASP.NET Core 6+的模板做了优化:当项目里存在继承自ControllerBase的控制器类时,框架会隐式注册最基础的控制器支持服务,刚好能满足WeatherForecastController这种简单接口的需求——它只用到了基础路由和JSON返回,没涉及复杂特性。

但这种隐式注册的服务非常有限,如果后续你要添加以下功能,必须显式调用AddControllers(),否则肯定会出问题:

  • 自定义模型绑定器
  • 全局异常过滤器
  • 支持XML或Protobuf这类非JSON的格式化
  • API版本控制
  • 属性注入(构造函数注入之外的注入方式)

总结

测试场景下注释掉能跑,但正式项目里绝对要保留这行代码,它是控制器功能完整运行的保障,避免后续扩展时踩坑。

内容的提问来源于stack exchange,提问作者g.pickardou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:59:53