我有一个客户端和服务器方案,其中客户端上安装了服务,服务器上安装了另一个服务。当这些安装在不同的机器上时,我没有任何问题。但是,我还希望能够在同一台机器上安装客户端服务和服务器服务。我可以将它们设置为使用不同的端口,但我想使用单个端口来完成此操作。
我启用并启动了Net.Tcp端口共享服务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();
答案 0 :(得分: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");
...
答案 1 :(得分:1)
这也应该有助于...在Code(vb.net)
中完成的TCP端口共享的工作版本http://softwarebykarl.wordpress.com/wcf-shared-tcp-port-in-code/