c# - Ninject's AllowNullInjection not working in ASP.NET WCF -


i using following ninject's nuget packages in asp.net wcf project:

  • ninject
  • ninject.web.common
  • ninject.web.common.webhost
  • ninject.extensions.wcf

my wcf service fooservice depends on irepository has concrete implementation foorepository this:

[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;     } } 

fooservice.svc:

<%@ servicehost language="c#"                  debug="true"                  service="foonamespace.fooservice"                  codebehind="fooservice.svc.cs"                  factory="ninject.extensions.wcf.ninjectservicehostfactory" %> 

and set dependencies in ninjectwebcommon.cs this:

private static void registerservices(ikernel kernel) {     kernel.settings.allownullinjection = true;     kernel.bind<irepository>().to<foorepository>().inrequestscope();      // want bind null ilogger through settings property     // instead of manually calling bind<ilogger>().toconstant<ilogger>(null) }        

but still got activationexception when wcf service activated:

error activating ilogger no matching bindings available, , type not self-bindable. activation path:  2) injection of dependency ilogger parameter logger of constructor of type foorepository  1) injection of dependency irepository parameter repository of constructor of type fooservice 

how can set optional injection in case?


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -