【问题标题】:Occasional Ninject error "More than one matching bindings are available."偶尔的 Ninject 错误“有多个匹配的绑定可用。”
【发布时间】:2019-12-01 11:14:50
【问题描述】:

我有一个使用 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 定义了一次绑定。 "

我无法重现我这边的问题。

【问题讨论】:

  • 您能提供您正在使用的绑定吗?

标签: asp.net-mvc-5 ninject


【解决方案1】:

我认为这可以通过在类构造函数中使用“命名”注释来解决。例如我有两个 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");

【讨论】:

    猜你喜欢
    • 2015-01-07
    • 2014-07-07
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多