4

サービスがクライアントにインストールされ、別のサービスがサーバーにインストールされる、クライアントとサーバーのシナリオがあります。これらが異なるマシンにインストールされている場合、問題はありません。ただし、クライアント サービスとサーバー サービスの両方を同じマシンにインストールできるようにしたいと考えています。異なるポートを使用するように設定できますが、単一のポートを使用してこれを実現したいと考えています。

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();
4

2 に答える 2

4

ServiceHost のインスタンス化中にベース Uri を異なるものにすることを解決しました。改訂されたコードは次のとおりです。

サーバ

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");
...
于 2009-08-23T19:53:11.923 に答える
1

これも役立つはずです...コードで行われたTCPポート共有の作業バージョン(vb.net)

http://softwarebykarl.wordpress.com/wcf-shared-tcp-port-in-code/

于 2011-07-20T17:50:40.997 に答える