【问题标题】:Interception doesn't work with WCF and Ninject 3.0拦截不适用于 WCF 和 Ninject 3.0
【发布时间】:2012-11-25 13:12:29
【问题描述】:

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

【问题讨论】:

    标签: wcf ninject ninject-interception


    【解决方案1】:

    代替

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

    您应该将绑定更改为

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

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

    Service="Fasade.TaskService"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 2013-11-07
      • 1970-01-01
      • 2021-10-20
      • 2015-02-23
      相关资源
      最近更新 更多