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
Post a Comment