2014-09-04 5 views
0

Я новичок на эту тему, так что я постараюсь сделать это ясно, как я могу ...Ninject перехвата WCF служба

Я создал WcfModule, где я загрузить следующий пакет:

Bind<IDistributorService>().To<DistributorService>().InRequestScope().Intercept().With<ExceptionInterceptor>(); 

в первой, я не получаю какие-либо ошибки, но я ставлю InterceptAttribute на моей функции:

[AttributeUsage(AttributeTargets.Method)] 
public sealed class HandleExceptionsAttribute : InterceptAttribute 
{ 
    public override IInterceptor CreateInterceptor(IProxyRequest request) 
    { 
     return request.Kernel.Get<ExceptionInterceptor>(); 
    } 
} 

[HandleExceptions] 
public virtual Result<List<DistributorDataContract>> GetDistributor(string id) 
{ 
    //...code... 

я получаю сообщение об ошибке в этой функции: (первая строка в методе)

private ServiceHost CreateNewServiceHost(Type serviceType, Uri[] baseAddresses, WebHttpBehavior webBehavior, WebHttpBinding webHttpBinding) 
{ 
    var host = base.CreateServiceHost(serviceType, baseAddresses); 
    //... 
} 

С ошибкой:

InvalidProxyConstructorArgumentsException was unhandled by user code Can not instantiate proxy of class: My.Namespace.DistributorService. Could not find a parameterless constructor.

Тот, кто знает, что может быть проблема? Благодаря!

ответ

0

Это исключение вызывается динамическим прокси-сервером замка, когда ему предписывается создать «прокси класса», который не имеет конструктора без параметров (по умолчанию), и никакие аргументы-конструкторы не передаются в замок (см. source).

Кажется немного странным, однако, что ninject не разрешает и не передает все необходимые параметры конструктора.

Какова реализация DistributorService и какова реализация базового класса класса, содержащего CreateNewServiceHost?

Обход: Конечно, переход на Intercept().With<TInterceptor>() синтаксиса, вероятно, также позволит вам использовать перехват (см http://codepyre.com/2010/03/using-ninject-extensions-interception-part-2-working-with-interceptors/)

 Смежные вопросы

  • Нет связанных вопросов^_^