2012-12-07 35 views
1

我有Ninject 3.0和拦截WCF方法的问题。拦截dosn't与WCF和Ninject 3.0工作

我使用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,

当我使用单元测试内核,ninject使用DynamicProxy对象ITaskService的实施,但它不适用于WCF。

我不知道为什么NinjectServiceHostFactory不使用DynamicProxy和Interception来返回ITaskService的实现。取而代之的

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

回答

1

你应该因为在服务文件更改绑定到

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

.SVC有执行

Service="Fasade.TaskService"