2 つのサービス コントラクトを実装する WCF サービスがあります...
public class MyService : IService1, IService2
そして、私はサービスをセルフホスティングしています...
host = new ServiceHost(typeof(MyService));
サービスが 1 つのサービス コントラクトのみを実装している場合はすべて正常に機能していましたが、次のように両方を登録するように autofac を設定しようとすると、次のようになります。
host.AddDependencyInjectionBehavior<IService1>(_container);
host.AddDependencyInjectionBehavior<IService2>(_container);
... 2 番目のもので例外をスローし、次のように報告します。
コレクションに同じタイプの項目が既に含まれているため、値をコレクションに追加できませんでした: 'Autofac.Integration.Wcf.AutofacDependencyInjectionServiceBehavior'。このコレクションは、各タイプのインスタンスを 1 つだけサポートします。
一見したところ、これは私の 2 つのコントラクトが何らかの形で同じタイプと見なされていると言っていると思いましたが、2 回目の読み取りでは、AutofacDependencyInjectionServiceBehavior が問題のタイプであると言っていると思います。つまり、2 回使用することはできません!
それでも、わずかに異なる形式で複数回使用することを明示的に示した次の投稿を見つけました。
foreach (var endpoint in host.Description.Endpoints)
{
var contract = endpoint.Contract;
Type t = contract.ContractType;
host.AddDependencyInjectionBehavior(t, container);
}
残念ながら、それはまったく同じエラーメッセージを出しました。
1 つのサービスに複数のサービス契約を登録することは可能ですか。