偶尔出现Ninject错误“有多个匹配的绑定可用。”

时间:2019-07-23 11:51:42

标签: asp.net-mvc-5 ninject

我有一个使用Ninject 3.2.2,ninject.mvc5 3.2.1,ninject.web.common 3.2.3和ninject.web.common.webhost 3.2.0的应用程序

应用正常运行时不会出现问题,但偶尔会出现错误:

“激活IDbFactory时出错 可以使用多个匹配的绑定。 匹配绑定:  1)从IDbFactory绑定到DbFactory  2)从IDbFactory绑定到DbFactory 激活路径:  4)将依赖项IDbFactory注入到OverviewRepository类型的构造函数的参数dbFactory中  3)将依赖项IOverviewRepository注入到OverviewService类型的构造函数的参数存储库中  2)将依赖项IOverviewService注入到HomeController类型的构造函数的参数overviewService中  1)请求HomeController

建议:  1)确保只为IDbFactory定义一次绑定。 “

我无法重现我的问题。

1 个答案:

答案 0 :(得分:0)

我认为可以通过使用类构造函数中的“命名”注释来解决。例如,我有两个UnitsOfWork。

public AppsUnitOfWork([Named("AppsWork")] DbContext context) {
        this.context = context;            
} 
public UnitOfWork([Named("UnitWork")]DbContext context) {
        this.context = context;
}  

我的绑定是这样的:

ninjectKernel.Bind<DbContext>().To<OracleDbContext>().Named("UnitWork");
ninjectKernel.Bind<DbContext>().To<AppsDbContext>().Named("AppsWork");