2009-08-23 4 views
4

私はクライアントとサーバーのシナリオを持っています。ここでは、サービスがクライアントにインストールされ、別のサービスがサーバーにインストールされます。これらが別のマシンにインストールされている場合、私は問題はありません。ただし、クライアントサービスとサーバーサービスの両方を同じマシンにインストールすることもできます。別のポートを使用するように設定することもできますが、単一のポートを使用してこれを実現したいと考えています。異なるエンドポイントアドレスを使用する場合、2つのアプリケーションが同じWCF NetTcpBindingポートを共有できますか。

Net.Tcp Port Sharing Service Windowsサービスを有効にして開始しました。まずサーバーサービスを起動します。私はクライアントサービスを開始しようとすると、私は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(); 

答えて

4

私はちょうどそれがベースURIの異なる時に作っ解決を次のようにサーバーとクライアントの両方が異なるエンドポイントアドレスを使用しますServiceHostのインスタンス化。改訂コードは次のとおりです。

サーバー

ServiceHost serviceHost = new ServiceHost(typeof(ServerService), 
    new Uri("net.tcp://localhost:50000/Server"); 
... 

クライアント

ServiceHost serviceHost = new ServiceHost(typeof(ClientService), 
    new Uri("net.tcp://localhost:50000/Client"); 
... 
関連する問題