我有一个实现两个服务合同的 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);
}
不幸的是,这给出了同样的错误信息。
是否可以在一项服务上注册多个服务合同,如果可以,如何注册?