using (var scope = _services.CreateScope())
{
var xxxService = scope.ServiceProvider.GetRequiredService<XXXXService>();
xx
……
}
上面代码通过创建一个scope对象来获取 XXXXService 服务,实际是创建了一个全新是scope对象,这里获取到的 XXXXService 也跟当前请求上下文中的 其他地方的 XXXXService 不是同一个对象。
出了using 范围后, scope即刻回收,并释放 XXXXService 对象。如果在子类中使用 XXXXService 则回报告 XXXXService 已经被释放,无法使用的错误。因此我们需要更换一种方法,以获取net运行时为当前上下文中的scope。如下面代码所示
在Autofac中使用下面语句获取
public BaseController()
{
//var scope = HttpContextUtil.Current.RequestServices.GetService<IServiceScope>();
var scope = HttpContextUtil.Current.RequestServices.GetService<ILifetimeScope>();
this.userService = scope.Resolve<UserService>();
}
原生ioc使用下面语句获取服务,不用获取scope
HttpContext.RequestServices.GetService(typeof(className));
本文链接:https://blog.nnwk.net/article/140
有问题请留言。版权所有,转载请在显眼位置处保留文章出处,并留下原文连接
Leave your question and I'll get back to you as soon as I see it. All rights reserved. Please keep the source and links
友情链接:
子卿全栈
全部评论