使用FrameLog和Ninject的依赖注入错误

时间:2014-11-05 17:47:00

标签: asp.net-mvc logging dependency-injection ninject

我已将FrameLog添加到我的MVC EF6代码第一个项目中,并在运行时遇到错误:

Error activating ILoggingFilterProvider using conditional implicit self-binding of ILoggingFilterProvider
Provider returned null.
Activation path:
 4) Injection of dependency ILoggingFilterProvider into parameter filterProvider of constructor of type GGContext
 3) Injection of dependency GGContext into parameter context of constructor of type TillService
 2) Injection of dependency ITillService into parameter tillService of constructor of type BankingController

根据指南& amp;我的上下文现在有filterProvider参数:

public class GGContext : DbContext
{
   public GGContext(ILoggingFilterProvider filterProvider = null) 
: base("name=myconnn") 
    {
     Logger = new FrameLogModule<ChangeSet, Employee>(new ChangeSetFactory(), FrameLogContext, filterProvider);
     ....

我认为错误与将上下文注入服务类中的构造函数有关:

private readonly GGContext _context;

public TillService(GGContext context)
{
   _context = context;
}

我需要更改什么来修复它?

更新

根据接受的答案,我得出结论,FrameLog对我的需求来说太过分了,需要比我准备做的更多的改变。因此,尽管答案并非直接解决问题,但它让我意识到我需要一个不同的解决方案。

我使用EF中的ChangeTracker属性实现了解决方案,如this answer by @VAAA

中所述

1 个答案:

答案 0 :(得分:0)

您需要为ILoggingFilterProvider ... Bind<ILoggingFilterProvider().To...创建绑定,或者需要将其从GCContext构造函数中删除。 Ninject不支持可选参数,也不支持默认值ILoggingFilterProvider filterProvider = null