我对Ninject 3.0和拦截WCF方法有疑问。
我正在使用TaskService
<%@ ServiceHost Language="C#" Debug="true" Service="Fasade.TaskService" Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory"%>
我的配置是:
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实现IInterceptor,
[当我将UnitTest用于内核时,ninject将DynamicProxy对象用于ITaskService实施操作,但在WCF中不起作用。
我不知道为什么NinjectServiceHostFactory不使用DynamicProxy和Interception返回ITaskService的实现。
代替
kernel.Bind<ITaskService>().To<TaskService>().
InRequestScope().Intercept().With(new ServiceInterceptor())
您应该将绑定更改为
Bind<TaskService>().ToSelf().
InRequestScope().Intercept().With<ServiceInterceptor>();
因为在服务文件.svc中有实现
Service="Fasade.TaskService"