ASP.Net Core通过自带DI框架不重启情况下动态修改注册服务实现可行吗?

2021-04-14  乐帮网

autofac

简单的回答是不可以的,为什么呢?不管是自带的DI还是使用autofac,都不可以实现的。这个根源在于ASP.Net Core的设计,不在于Ioc框架,在ASP.Net中我们所有的服务提供容器(ServiceProvder)在程序启动后就已经指定在上下文中componentContext。这个就是我们说的范围scope。一但这个Scope指定后不管在哪里都是无法替换的,也就是说无法再修改了。即使如你所愿你拿到RootContainer,重新添加修改注册类型,但是旧的scope一直存在,也不会受影响。

在原生的框架里我们是通过ServiceCollections 来添加注册类型的。一但启动它会调用方法 services.BuildServiceProvder(),然后返回一个容器(IServiceProvder)来添加到上下文中。除了重启程序外我们无法改变它。

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力