我正在尝试在 Web Api 方法中使用依赖解析器。这可以正常工作,并且可以与带有 DepedencyResolver.GetService() 的经典 ASP.NET MVC 一起正常工作
但我不能让它在 WepApi 方法中工作。
我的注册将所有实例注册为 InstancePerApiRequest ,如果我在 WebAPiConroller 的构造函数上添加我在引导程序中注册的所有类型中的任何一种,则在内部调用它们时注入正常,但不再注入。
就像我说的获取方法中的这样
var userRepository = (IUserRepositoryu)GlobalConfiguration
.Configuration.DependencyResolver.GetService(typeof(IUserRepository));
我得到了 no scope WebRequest 错误。奇怪的是,在将其全部更改为 GlobalConfiguration 之前,它在 Beta 中运行良好。
所以我的问题是,如何像以前一样在我的 webAPI 的生命周期范围内激活我的 Autofac 注册程序集?
我的错误:
“从请求实例的范围中看不到带有与‘AutofacWebRequest’匹配的标记的范围。这通常表明注册为每个 HTTP 请求的组件正在被 SingleInstance() 组件(或类似场景)请求。)在 Web 集成下,始终从 DependencyResolver.Current 或 ILifetimeScopeProvider.RequestLifetime 请求依赖项,而不是从容器本身请求依赖项。”
var resolver = new AutofacWebApiDependencyResolver(container);
configuration.DependencyResolver = resolver;