サービスがクライアントにインストールされ、別のサービスがサーバーにインストールされる、クライアントとサーバーのシナリオがあります。これらが異なるマシンにインストールされている場合、問題はありません。ただし、クライアント サービスとサーバー サービスの両方を同じマシンにインストールできるようにしたいと考えています。異なるポートを使用するように設定できますが、単一のポートを使用してこれを実現したいと考えています。
Net.Tcp Port Sharing Service Windows サービスを有効にして開始しました。最初に Server サービスを起動します。クライアント サービスを開始しようとすると、serviceHost.Open() の実行時に次の例外が発生します。
The TransportManager failed to listen on the supplied URI using the NetTcpPortSharing service: the URI is already registered with the service.
以下はソースコードです。サーバーとクライアントの両方が、次のように異なるエンド ポイント アドレスを使用します。
サーバー サービス:
ServiceHost serviceHost = new ServiceHost(typeof(ServerService),
new Uri("net.tcp://localhost:50000");
NetTcpBinding binding = new NetTcpBinding();
serviceHost.AddServiceEndpoint(typeof(IServerService),
binding, "ServerService");
serviceHost.Open();
顧客サービス:
ServiceHost serviceHost = new ServiceHost(typeof(ClientService),
new Uri("net.tcp://localhost:50000");
NetTcpBinding binding = new NetTcpBinding();
serviceHost.AddServiceEndpoint(typeof(IClientService),
binding, "ClientService");
serviceHost.Open();