拦截不适用于WCF和Ninject 3.0

问题描述 投票:1回答:1

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

wcf ninject ninject-interception
1个回答
1
投票

代替

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

您应该将绑定更改为

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

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

Service="Fasade.TaskService"
© www.soinside.com 2019 - 2024. All rights reserved.