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

C# 如果两个应用程序使用不同的端点地址,它们是否可以共享相同的WCF NetTcpBinding端口?,c#,wcf,nettcpbinding,servicehost,C#,Wcf,Nettcpbinding,Servicehost,我有一个客户机和服务器场景,其中一个服务安装在客户机上,另一个服务安装在服务器上。当这些安装在不同的机器上时,我没有问题。但是,我希望能够在同一台机器上同时安装客户机服务和服务器服务。我可以将它们设置为使用不同的端口,但是我希望使用单个端口来实现这一点 我已启用并启动Net.Tcp端口共享服务Windows服务。我首先启动服务器服务。当我尝试启动客户端服务时,在执行serviceHost.Open()时出现以下异常: TransportManager未能使用NetCpportShared服务侦听

我有一个客户机和服务器场景,其中一个服务安装在客户机上,另一个服务安装在服务器上。当这些安装在不同的机器上时,我没有问题。但是,我希望能够在同一台机器上同时安装客户机服务和服务器服务。我可以将它们设置为使用不同的端口,但是我希望使用单个端口来实现这一点

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

TransportManager未能使用NetCpportShared服务侦听提供的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 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");
...
客户服务:

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 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");
...

我刚刚解决了在ServiceHost实例化期间使基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 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");
...
客户端

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 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");
...

这也应该有助于…在代码(vb.net)中完成TCP端口共享的工作版本


此页面不再可用,是否愿意在此共享您的解决方案?