Unity:无法构造InjectionPolicy类型

syd*_*yos 6 ioc-container inversion-of-control unity-container asp.net-mvc-4

这是一个我几个小时都在苦苦挣扎的难题.这是背景:

  1. 我们Unity IoC在MVC4网络应用程序中使用
  2. 我们有一对ApiControllers (IHttpController)和一堆常规控制器(IController)
  3. 工作的解决方案IControllers很好
  4. 该解决方案IHttpControllers已经运行了好几个月,现在因类型解析错误而失败,其中包含详细信息" The type InjectionPolicy cannot be constructed. You must configure the container to supply this value"
  5. 常规控制器和Api控制器都采用具有ICustomerService依赖关系的依赖关系,该ICustomerRepository依赖关系又具有IClient依赖关系,但这些依赖关系都不是新的或不同的.
  6. ICustomerServiceApiController解决问题中删除依赖性(但该接口已明确配置并在其他地方工作)
  7. 我们已经在HttpControllerActivatorUnity中注册并拦截了解决IHttpControllers它的调用- 它在容器上失败.解析,即使查看容器,控制器显然也在那里.

我搜索了这个特定的错误并没有找到任何结果.有没有人见过它或它是否给你任何关于可能发生的事情的线索?

非常感谢!

更新:我已将其缩小到ICustomerRepository分辨率(再次,在所有其他流程中工作).错误是:

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)
Run Code Online (Sandbox Code Playgroud)