我遇到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的实现。
答案 0 :(得分:1)
而不是
kernel.Bind<ITaskService>().To<TaskService>().
InRequestScope().Intercept().With(new ServiceInterceptor())
你应该改变绑定到
Bind<TaskService>().ToSelf().
InRequestScope().Intercept().With<ServiceInterceptor>();
因为在服务文件.svc中有实现
Service="Fasade.TaskService"