我在项目中使用Autofac
作为依赖注入容器。我想使用InstancePerRequest
范围,因为我不希望这些对象比请求更长久。
以下是我在网关类中使用的代码,我知道每个请求都会通过它。
using (var scope = _container.BeginLifetimeScope(MatchingScopeLifetimeTags.RequestLifetimeScopeTag))
{
var service = scope.Resolve<MyTestService>();
...
}
现在,在我的代码中,我找到了其他几个我需要解析MyTestService
的类,目前正在使用消息No scope with a Tag matching 'AutofacWebRequest'
导致异常。例外是因为我在container
实例上调用了解析,而我应该在同一个scope
实例上调用resolve,如上所示。
有人可以帮助我知道如何在我的代码中的那些位置访问相同的scope
实例吗?我无法在所有课程中调用BeingLifetimeScope
。
答案 0 :(得分:0)
不幸的是,我被困在手机上,我的房子正在改造,所以我没有电脑访问权限。因此,你会得到一个没有代码的简短答案,但它应该解开你。
你说你已经阅读了文档,所以你应该知道:
您的问题无法告诉为什么您需要范围。我猜你可能有更好的方法来做你想要做的事情,但被困在我的手机上我无法真正扩展百万种可能性和方法来解决你所说的你需要做的事情。在未来的问题中,请考虑更多地解释上下文 - 为什么您的服务需要通过“网关”以及为什么您处于这种情况而不仅仅是注入构造函数参数并让Autofac集成完成繁重工作。
无论如何,这应该会让你失望。如果没有,您需要用其他背景澄清您的问题,也许其他人可以加入。