Могут ли два приложения использовать один и тот же порт WCT NetTcpBinding, если они используют разные адреса конечных точек? - PullRequest
4 голосов
/ 23 августа 2009

У меня есть сценарий «Клиент и сервер», где служба установлена ​​на клиенте, а другая - на сервере. У меня нет проблем, когда они установлены на разных машинах. Однако я хотел бы также иметь возможность установить службу клиента и службу сервера на одном компьютере. Я мог бы настроить их на использование разных портов, однако я бы хотел сделать это, используя один порт.

Я включил и запустил службу Windows службы общего доступа к портам Net.Tcp. Сначала я запускаю службу сервера. Когда я пытаюсь запустить службу клиента, я получаю следующее исключение при выполнении 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();

Ответы [ 2 ]

4 голосов
/ 23 августа 2009

Я только что решил, что базовый Uri изменился во время создания ServiceHost. Пересмотренный код следует:

Сервер

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 голос
/ 20 июля 2011

Это также должно помочь ... рабочая версия общего доступа к TCP-порту, выполненная в Code (vb.net)

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

...