- AddTransient 每次service请求都是获得不同的实例
- 请求获取-(GC回收-主动释放) 每一次获取的对象都不是同一个
- AddScoped 对于同一个请求返回同一个实例,
- 请求开始-请求结束 在这次请求中获取的对象都是同一个
- 不同的请求返回不同的实例
- 同一个请求中也会区分GET POST 方式
- AddSingleton 每次都是获得同一个实例
- 在全局都是共享的,其生命周期最长。
- 项目启动-项目关闭 相当于静态类 只会有一个
-
注意:
由于AddScoped对象是在请求的时候创建的
所以不能在AddSingleton对象中使用
甚至也不能在AddTransient对象中使用
-
权重为
-
AddSingleton→AddTransient→AddScoped
-
不然则会抛如下异常

-
asp.net core AddTransient、AddScoped和AddSingleton三者的区别
最新推荐文章于 2025-08-15 10:26:54 发布
本文深入解析了DI容器中三种服务生命周期:AddSingleton, AddScoped 和 AddTransient 的工作原理及应用场景。AddSingleton确保整个应用周期内只创建一次实例,AddScoped在每个HTTP请求周期内创建并共享同一实例,而AddTransient则为每次请求创建新实例。文章还强调了不同生命周期服务间的使用限制,避免因不当使用导致的异常。
586

被折叠的 条评论
为什么被折叠?



