C# Ninject';s AllowNullInjection在ASP.NET WCF中不工作

C# Ninject';s AllowNullInjection在ASP.NET WCF中不工作,c#,asp.net,wcf,ninject,C#,Asp.net,Wcf,Ninject,我正在ASP.NET WCF项目中使用以下Ninject的NuGet软件包: 尼尼特 Ninject.Web.Common Ninject.Web.Common.WebHost Ninject.Extensions.Wcf 我的WCF服务FooService依赖于IRepository,它有一个具体的实现foosrepository,如下所示: [ServiceContract] public interface IFooService { [OperationContract]

我正在ASP.NET WCF项目中使用以下Ninject的NuGet软件包:

  • 尼尼特
  • Ninject.Web.Common
  • Ninject.Web.Common.WebHost
  • Ninject.Extensions.Wcf
我的WCF服务
FooService
依赖于
IRepository
,它有一个具体的实现
foosrepository
,如下所示:

[ServiceContract]
public interface IFooService
{
    [OperationContract]
    IEnumerable<Foo> GetFoos();
}

public class FooService : IFooService
{
    private readonly IRepository _repository;

    public FooService(IRepository repository)
    {
        _repository = repository;
    }
}

public class FooRepository : IRepository
{
    private readonly FooContext _fooContext;
    private readonly ILogger _logger;

    public FooRepository(FooContext fooContext, ILogger logger)
    {
        _fooContext = fooContext;
        _logger = logger;
    }
}
private static void RegisterServices(IKernel kernel)
{
    kernel.Settings.AllowNullInjection = true;
    kernel.Bind<IRepository>().To<FooRepository>().InRequestScope();

    // I want to bind null to ILogger through the Settings property
    // instead of manually calling Bind<ILogger>().ToConstant<ILogger>(null)
}       
我在
NinjectWebCommon.cs
中设置依赖项,如下所示:

[ServiceContract]
public interface IFooService
{
    [OperationContract]
    IEnumerable<Foo> GetFoos();
}

public class FooService : IFooService
{
    private readonly IRepository _repository;

    public FooService(IRepository repository)
    {
        _repository = repository;
    }
}

public class FooRepository : IRepository
{
    private readonly FooContext _fooContext;
    private readonly ILogger _logger;

    public FooRepository(FooContext fooContext, ILogger logger)
    {
        _fooContext = fooContext;
        _logger = logger;
    }
}
private static void RegisterServices(IKernel kernel)
{
    kernel.Settings.AllowNullInjection = true;
    kernel.Bind<IRepository>().To<FooRepository>().InRequestScope();

    // I want to bind null to ILogger through the Settings property
    // instead of manually calling Bind<ILogger>().ToConstant<ILogger>(null)
}       
在这种情况下,如何设置可选注入