Asp.net mvc 4 Unity:无法构造类型注入策略
这是一个困扰我几个小时的难题。背景如下:Asp.net mvc 4 Unity:无法构造类型注入策略,asp.net-mvc-4,inversion-of-control,unity-container,ioc-container,Asp.net Mvc 4,Inversion Of Control,Unity Container,Ioc Container,这是一个困扰我几个小时的难题。背景如下: 我们在MVC4 web应用程序中使用Unity IoC 我们有两个apicontroller(IHttpController)和一组常规控制器(IController) i控制器的分辨率可以正常工作 IHttpControllers的解析已经正常工作了几个月,现在由于类型解析错误而失败,该错误包含详细信息“无法构造类型注入策略。您必须配置容器以提供此值” 常规控制器和Api控制器都采用ICCustomerService依赖项,该依赖项具有ICCustom
Unity IoC
apicontroller(IHttpController)
和一组常规控制器(IController
)i控制器的分辨率可以正常工作
IHttpControllers
的解析已经正常工作了几个月,现在由于类型解析错误而失败,该错误包含详细信息“无法构造类型注入策略。您必须配置容器以提供此值
”ICCustomerService
依赖项,该依赖项具有ICCustomerRepository
依赖项,而该依赖项又具有ICClient
依赖项,但这些都不是新的或不同的ApiController
中删除icCustomerService
依赖项可以解决问题(但该接口已明确配置,并且在其他任何地方都可以工作)HttpControllerActivator
,它在Unity中注册,正在拦截解析IHttpController
的调用-它在容器上失败。解析,即使查看容器,控制器显然在那里icCustomerRepository
解决方案(同样,在所有其他流中工作)。错误是:
Resolving Xxx.CustomerRepository,(none) (mapped from Xxx.ICustomerRepository, (none))
Resolving Microsoft.Practices.Unity.InterceptionExtension.PolicyInjectionBehavior,(none)
Resolving parameter "policies" of constructor Microsoft.Practices.Unity.InterceptionExtension.PolicyInjectionBehavior(Microsoft.Practices.Unity.InterceptionExtension.CurrentInterceptionRequest interceptionRequest, Microsoft.Practices.Unity.InterceptionExtension.InjectionPolicy[] policies, Microsoft.Practices.Unity.IUnityContainer container)
Resolving Microsoft.Practices.Unity.InterceptionExtension.InjectionPolicy[],(none)
您确定相同的dll不会加载两次吗?我记得有一些插件架构,插件从他们的文件夹加载了一个dll,主容器从不同的文件夹加载了相同的dll。最后,结果是同一个静态类有2个实例。您可以使用第一次加载的dll类配置unity,然后从第二个dll请求实例。理论上,一个dll只加载一次,但是如果在不同的文件夹中有一个较旧的版本,那么同一个dll有两个版本,它们可以由同一个运行时加载。