4

我有一个客户端和服务器方案,其中一个服务安装在客户端上,另一个服务安装在服务器上。当它们安装在不同的机器上时,我没有问题。但是,我还希望能够在同一台机器上安装客户端服务和服务器服务。我可以将它们设置为使用不同的端口,但是我想使用单个端口来完成此操作。

我已经启用并启动了 Net.Tcp 端口共享服务 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

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 回答