У меня есть служба WCF, которая реализует два контракта на обслуживание...
public class MyService : IService1, IService2
и я сам предоставляю услуги...
host = new ServiceHost(typeof(MyService));
Все работало нормально, когда служба реализовала только один контракт на обслуживание, но когда я пытаюсь настроить autofac для регистрации так:
host.AddDependencyInjectionBehavior<IService1>(_container);
host.AddDependencyInjectionBehavior<IService2>(_container);
... он выдает исключение на втором, сообщая:
Значение не может быть добавлено в коллекцию, так как коллекция уже содержит элемент того же типа: "Autofac.Integration.Wcf.AutofacDependencyInjectionServiceBehavior". Эта коллекция поддерживает только один экземпляр каждого типа.
На первый взгляд, я думал, что это говорит о том, что мои два контракта были как-то похожими на то же, но во втором чтении я считаю, что это говорит о том, что AutofacDependencyInjectionServiceBehavior - это тип, о котором идет речь, т.е. Я не могу использовать его дважды!
И все же я нашел этот пост, который явно показывал его несколько раз в несколько иной форме:
foreach (var endpoint in host.Description.Endpoints)
{
var contract = endpoint.Contract;
Type t = contract.ContractType;
host.AddDependencyInjectionBehavior(t, container);
}
К сожалению, это дало такое же сообщение об ошибке.
Возможно ли зарегистрировать более одного контракта на одну услугу, и если да, то как?