Mam usług WCF, który implementuje dwa kontrakty usługowe ...Jak zarejestrować dwa kontrakty serwisowe WCF z autofac
public class MyService : IService1, IService2
i jestem self-hosting usługi ...
host = new ServiceHost(typeof(MyService));
Wszystko działało poprawnie, gdy usługa zaimplementowała tylko jedną umowę o świadczenie usług, ale kiedy próbuję skonfigurować autofac, aby zarejestrować oba w ten sposób:
host.AddDependencyInjectionBehavior<IService1>(_container);
host.AddDependencyInjectionBehavior<IService2>(_container);
... zgłasza wyjątek w drugim, zgłaszając:
Wartości nie można było dodać do kolekcji, ponieważ kolekcja zawiera już element tego samego typu: "Autofac.Integration.Wcf. AutofacDependencyInjectionServiceBehavior ". Ta kolekcja obsługuje tylko jedną instancję każdego typu.
Na pierwszy rzut oka myślałem, że to mówił moje dwie umowy zostały w jakiś sposób są postrzegane jako tego samego rodzaju, ale w drugim czytaniu wierzę, że mówi, że AutofacDependencyInjectionServiceBehavior jest typem o którym mowa, to znaczy, że nie można go używać dwa razy!
A jednak znalazłem this post wyraźnie pokazał, że używając go kilka razy w nieco innej formie:
foreach (var endpoint in host.Description.Endpoints)
{
var contract = endpoint.Contract;
Type t = contract.ContractType;
host.AddDependencyInjectionBehavior(t, container);
}
niestety, że dał bardzo sam komunikat o błędzie.
Czy można zarejestrować więcej niż jedną umowę o świadczenie usług w jednej usłudze, a jeśli tak, to w jaki sposób?
Dziękuję - powinienem był spróbować tego! Cieszę się, że mnie udowodniłeś źle :-) –