Перехват не работает с WCF и Ninject 3.0

У меня проблема с 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.

1 ответ

Решение

Вместо

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

Вы должны изменить привязку к

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

потому что в служебном файле.svc есть реализация

Service="Fasade.TaskService"
Другие вопросы по тегам