単一のコントラクトで ServiceHost を実行すると、次のように正常に動作します。
servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.Open();
ここで、2 番目 (3 番目、4 番目、...) のコントラクトを追加したいと思います。私の最初の推測は、次のようなエンドポイントを追加することです。
servicehost = new ServiceHost(typeof(MyService1));
servicehost.AddServiceEndpoint(typeof(IMyService1), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService1");
servicehost.AddServiceEndpoint(typeof(IMyService2), new NetTcpBinding(), "net.tcp://127.0.0.1:800/MyApp/MyService2");
servicehost.Open();
しかしもちろん、これは機能しません。ServiceHost の作成では、MyService1 をパラメーターとして渡すか、MyService2 を渡すことができるため、多くのエンドポイントをサービスに追加できますが、提供できるのはすべて同じコントラクトを使用する必要があるためです。 1つの実装?
ここで、私は要点を見逃していると感じました。私が追加するすべてのエンドポイント コントラクトの実装を提供する何らかの方法があるはずです。