2012-03-06 8 views
5

Próbuję zarejestrować serwer proxy Cross-AppDomain z funkcją Autofac.Serwery proxy Autofac i Cross-AppDomain

Typ betonu reprezentowany przez serwer proxy implementuje interfejs IServiceHost. W związku z tym serwer proxy powinien również, w celu umożliwienia wywołań do proxy wykorzystujących ten interfejs do działania.

próbuję zarejestrować proxy z Autofac, wykonując:

void Initialize(IServiceHost host) 
{ 
    Host = host; 

    var builder = new ContainerBuilder(); 
    builder.RegisterInstance(host) 
     .As<IServiceHost>() 
     .SingleInstance(); 

    Scope = builder.Build(); 
} 

jednak na wezwanie builder.Build(), otrzymuję:

ArgumentException

typu „System.MarshalByRefObject "nie można przypisać usługi" Treadmarks.Core.ServiceBase.IServiceHost ".

Jednak host jest zdecydowanieIServiceHost, ponieważ nie jest null i pochodzi z silnie typami metoda argumentacji.

Czy ktoś może wyjaśnić, w jaki sposób mogę poprawnie zarejestrować proxy?

+0

Więc 'host' nie implementuje' IServiceHost'? W takim przypadku nie jest to problem autofachu. – Steven

+0

@Steven Powiedziałem konkretnie, że typ pośredni * nie * implementuje 'IServiceHost', a zatem proxy musi go również implementować. –

+0

Autofac sprawdza, czy 'host' jest' IServiceHost', a ponieważ nie jest, Autofac zgłasza wyjątek. – Steven

Odpowiedz

2

Powinieneś być w stanie użyć lambda z metodą .Register(), zamiast .RegisterInstance(), aby obejść to.

+0

To działa. Dzięki. –