Roc*_*han 3 asp.net-mvc autofac asp.net-web-api
我正在尝试在Web Api方法中使用依赖性解析器.这很好用,可以使用DepedencyResolver.GetService()与经典的ASP.NET MVC一起使用
但我无法在WepApi方法中使用它.
我的注册将所有实例注册为InstancePerApiRequest,并且如果我在我的WebAPiConroller的构造函数中添加我在引导程序中注册的所有类型中的任何类型,那么在内部调用它们时注入罚款但不再存在.
在我说的Get Method中就像这样
var userRepository = (IUserRepositoryu)GlobalConfiguration
.Configuration.DependencyResolver.GetService(typeof(IUserRepository));
Run Code Online (Sandbox Code Playgroud)
我得到了无范围的WebRequest错误.奇怪的是,在将它们全部更改为GlobalConfiguration之前,它在Beta中运行良好.
所以我的问题是,如何像以前一样在我的webAPi的生命周期范围内激活我的Autofac注册程序集?
我的错误:
"从请求实例的作用域中看不到具有匹配'AutofacWebRequest'的标记的作用域.这通常表示由SingleInstance()组件(或类似方案)重新请求按HTTP请求注册的组件.在Web集成下,总是从DependencyResolver.Current或ILifetimeScopeProvider.RequestLifetime请求依赖,而不是从容器本身请求."
var resolver = new AutofacWebApiDependencyResolver(container);
configuration.DependencyResolver = resolver;
Run Code Online (Sandbox Code Playgroud)
在Web API中,全局依赖项解析程序用于访问全局实例.每个请求服务来自Web API为处理请求而创建的依赖范围.我不确定Web API中是否有任何方法可以访问当前的依赖范围 - 知道它会很有趣.
这里最好的选择是使用依赖注入,而不是像这样直接调用解析器.您的代码的哪一部分需要进行此调用?
归档时间: |
|
查看次数: |
5720 次 |
最近记录: |