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

这是一个困扰我几个小时的难题。背景如下:

  • 我们在MVC4 web应用程序中使用
    Unity IoC
  • 我们有两个
    apicontroller(IHttpController)
    和一组常规控制器(
    IController
  • i控制器的分辨率可以正常工作
  • IHttpControllers
    的解析已经正常工作了几个月,现在由于类型解析错误而失败,该错误包含详细信息“
    无法构造类型注入策略。您必须配置容器以提供此值
  • 常规控制器和Api控制器都采用
    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有两个版本,它们可以由同一个运行时加载。