【发布时间】:2015-04-11 20:27:00
【问题描述】:
我正在使用 ASP.NET vNext,我想使用 InstancePerRequest 进行一些注册,例如 MyDbContext 就是一个例子。
我有 Autofac 使用 InstancePerLifetimeScope 运行这些依赖项。哪个有效....
但一旦我改用InstancePerRequest,我就会收到这个常见错误:
DependencyResolutionException:没有标签匹配的范围 'AutofacWebRequest' 在实例所在的范围内可见 被要求。这通常表明一个组件注册为 SingleInstance() 组件正在请求每个 HTTP 请求 (或类似的场景。)在 web 集成下总是请求 DependencyResolver.Current 或 ILifetimeScopeProvider.RequestLifetime,从不来自容器 自己。
我已阅读有关此问题的 Autofac 帮助文档....但我不确定如何设置导致此异常的“请求生命周期范围”。
有没有人设置了一个集成 Autofac 的 ASP.NET 5 Web 应用程序,包括InstancePerRequest?
【问题讨论】:
-
我还没有尝试使用 Autofac 的 ASP.net v5,但是这个错误的一个常见原因是
HttpContext.Current在解析时为空。异常的堆栈跟踪是什么?你在解析 HTTP 请求之外的类型吗? -
是的,在运行时它试图解决每个请求对标记的生命周期范围的依赖关系,这是每个请求最重要的。问题是尚未设置生命周期范围。我会尽快贴出堆栈跟踪。
标签: asp.net autofac asp.net-core asp.net-core-mvc