c# – 如果两个应用程序使用不同的端点地址,它们是否可以共享相同的WCF NetTcpBinding端口?

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

我启用并启动了Net.Tcp端口共享服务Windows服务.我首先启动Server服务.当我尝试启动客户端服务时,执行serviceHost.Open()时会出现以下异常:

TransportManager无法使用NetTcpPortSharing服务侦听提供的URI:URI已在服务中注册.

以下是源代码.服务器和客户端都使用不同的端点地址,如下所示:

服务器服务:

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

解决方法:

我刚刚解决了它,在实例化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");
...
上一篇:c# – 如何为没有SVC文件的自托管WCF服务指定ServiceHostFactory


下一篇:linux系统conda环境使用