1

我对 Ninject 3.0 和拦截 WCF 方法有疑问。

我正在使用任务服务

<%@ 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 的实现。

4

1 回答 1

1

代替

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

您应该将绑定更改为

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

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

Service="Fasade.TaskService"
于 2012-12-10T08:40:07.867 回答