문제

I have problem with Ninject 3.0 and interception WCF method.

I'm using TaskService

<%@ ServiceHost Language="C#" Debug="true" Service="Fasade.TaskService"     Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory"%>

and my configuration is:

var settings = new NinjectSettings {LoadExtensions = false};
IKernel kernel = new StandardKernel(
   new NinjectSettings {LoadExtensions = false},
   new WcfModule(),
   new DynamicProxyModule()
);

kernel.Bind<ITaskService>().To<TaskService>().InRequestScope().Intercept().With(new ServiceInterceptor());

ServiceInterceptor implement IInterceptor,

When i'm using UnitTest for kernel, ninject use DynamicProxy object for ITaskService implementaction, but it dosn't work in WCF.

I don't know why NinjectServiceHostFactory don't use DynamicProxy and Interception to return implementation of ITaskService.

도움이 되었습니까?

해결책

Instead of

kernel.Bind<ITaskService>().To<TaskService>().
    InRequestScope().Intercept().With(new ServiceInterceptor())

you should change binding to

Bind<TaskService>().ToSelf().
    InRequestScope().Intercept().With<ServiceInterceptor>();

because in service file .svc there is implementation

Service="Fasade.TaskService"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top