ASP.NET Core Controller如何与IOC结合实现最佳实践?

2026-04-01 09:420阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3682个文字,预计阅读时间需要15分钟。

ASP.NET Core Controller如何与IOC结合实现最佳实践?

前言:看到,可能大家会质疑Controller和IOC的关联,但我是坚决反对将它们等同的。虽然相信很多人已经知道了这样一个观点,但默认情况下,ASP.NET Core的Controller并不会托管。

前言

看到标题可能大家会有所疑问Controller和IOC能有啥羁绊,但是我还是拒绝当一个标题党的。相信有很大一部分人已经知道了这么一个结论,默认情况下ASP.NET Core的Controller并不会托管到IOC容器中,注意关键字我说的是"默认",首先咱们不先说为什么,如果还有不知道这个结论的同学们可以自己验证一下,验证方式也很简单,大概可以通过以下几种方式。

验证Controller不在IOC中

首先,我们可以尝试在ServiceProvider中获取某个Controller实例,比如

public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { var productController = app.ApplicationServices.GetService<ProductController>(); }

这是最直接的方式,可以在IOC容器中获取注册过的类型实例,很显然结果会为null。

阅读全文

本文共计3682个文字,预计阅读时间需要15分钟。

ASP.NET Core Controller如何与IOC结合实现最佳实践?

前言:看到,可能大家会质疑Controller和IOC的关联,但我是坚决反对将它们等同的。虽然相信很多人已经知道了这样一个观点,但默认情况下,ASP.NET Core的Controller并不会托管。

前言

看到标题可能大家会有所疑问Controller和IOC能有啥羁绊,但是我还是拒绝当一个标题党的。相信有很大一部分人已经知道了这么一个结论,默认情况下ASP.NET Core的Controller并不会托管到IOC容器中,注意关键字我说的是"默认",首先咱们不先说为什么,如果还有不知道这个结论的同学们可以自己验证一下,验证方式也很简单,大概可以通过以下几种方式。

验证Controller不在IOC中

首先,我们可以尝试在ServiceProvider中获取某个Controller实例,比如

public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { var productController = app.ApplicationServices.GetService<ProductController>(); }

这是最直接的方式,可以在IOC容器中获取注册过的类型实例,很显然结果会为null。

阅读全文