У меня есть сценарий «Клиент и сервер», где служба установлена на клиенте, а другая - на сервере. У меня нет проблем, когда они установлены на разных машинах. Однако я хотел бы также иметь возможность установить службу клиента и службу сервера на одном компьютере. Я мог бы настроить их на использование разных портов, однако я бы хотел сделать это, используя один порт.
Я включил и запустил службу 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();