Asp.net web api SingleInstance和InstancePerRequest在Web API 2下不工作
我有以下注册:Asp.net web api SingleInstance和InstancePerRequest在Web API 2下不工作,asp.net-web-api,autofac,asp.net-web-api2,Asp.net Web Api,Autofac,Asp.net Web Api2,我有以下注册: builder .RegisterAssemblyTypes(assemblies) .Where(t => t.GetCustomAttributes(typeof(IocContainerMarkerAttribute), false).Any() && ((IocContainerMarkerAttribute)t.GetCustomAttribute(typ
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”匹配的作用域。这通常表示根据HTTP请求注册的组件正被web集成下的SingleInstance()组件(或类似场景)请求。始终从DependencyResolver.Current或ILifetimeScopeProvider.RequestLifetime请求依赖项,而不是从容器本身
这似乎是一件很平常的事情,那么我在这里遗漏了什么呢
谢谢
更新
问题似乎是另一个。我需要将singleton依赖项注入InstancePerRequest对象。结果是,我犯了一个错误,在SingleIntance对象中设置了InstancePerRequest依赖项