我有以下注册:
builder
.RegisterAssemblyTypes(assemblies)
.Where(t => t.GetCustomAttributes(typeof(IocContainerMarkerAttribute), false).Any()
&& ((IocContainerMarkerAttribute)t.GetCustomAttribute(typeof(IocContainerMarkerAttribute))).IsSingleInstance == false)
.AsImplementedInterfaces()
.InstancePerRequest()
.PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
builder
.RegisterAssemblyTypes(assemblies)
.Where(t => t.GetCustomAttributes(typeof(IocContainerMarkerAttribute), false).Any()
&& ((IocContainerMarkerAttribute)t.GetCustomAttribute(typeof(IocContainerMarkerAttribute))).IsSingleInstance)
.AsImplementedInterfaces()
.SingleInstance()
.PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
我正在尝试请求以下依赖项:
[IocContainerMarker(false)]
public class SecurityProvider : ISecurityProvider
{}
像这样:
ar authenticationSecurityProvider = (ISecurityProvider)request.GetDependencyScope().GetService(typeof(ISecurityProvider));
如果我评论第二个注册构建块,它可以正常工作但如果我取消注释它,我会得到以下异常:
从请求实例的作用域中看不到具有匹配'AutofacWebRequest'的标记的作用域。这通常表示SingleInstance()组件(或类似场景)正在请求注册为每HTTP请求的组件。在Web集成下,始终从DependencyResolver.Current或ILifetimeScopeProvider.RequestLifetime请求依赖项,从不从容器本身请求的
这似乎是一件相当普遍的事情,所以我在这里缺少什么?
由于
更新
问题似乎是另一个问题。我需要将一个单例依赖项注入InstancePerRequest。
答案 0 :(得分:0)
事实证明,我犯了一个错误,并在SingleIntance对象中设置了InstancePerRequest依赖项。