2012-12-07 103 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"