截取不适用于WCF和Ninject 3.0

时间:2012-12-07 10:58:15

标签: wcf ninject ninject-interception

我遇到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的实现。

1 个答案:

答案 0 :(得分:1)

而不是

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

你应该改变绑定到

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

因为在服务文件.svc中有实现

Service="Fasade.TaskService"