Menahem Menahem - 1 month ago 19x
C# Question

WCF net tcp port sharing

I have 2 WCF services each hosted in its own console app.

they are hosted at:


each has its own contract.
i want them to use the same port, so i read a lot on the subject, and did the following:

  1. Enabled the net tcp port sharing service.

  2. Registered the url`s using the commands:

netsh http add urlacl user=domain\username url=net.tcp://+:7777/Service1

netsh http add urlacl user=domain\username url=net.tcp://+:7777/Service2

  1. enabled the
    on the bindings in for each WCF service

  2. hosted each one in it`s own console app.

if i start both console apps, the second one always gives this exception on the call to the host's

AddressAlreadyInUseException. The transport manager failed to listen on the supplied
URI using the NetTcpPortSharing service: the URI is already registered with the

when i host them both in the same console app, it all works just fine.

my question is: how to get it working when each service is hosted in it's own console app.


As Jon_Lindeheim and you stated, this should work fine. so i recreated everything from scratch as follows:

I have two WCF services that had the same base address and a different relative URI
i.e. for service 1:

    <add baseAddress = "net.tcp://computername:7777/" />
    <endpoint address = "/service1" ... />

and for service 2:

    <add baseAddress = "net.tcp://computername:7777/" />
    <endpoint address = "/service2" ... />  

I was not aware that base addresses must be different not just the eventual absolute URI.

so the following works fine: for service 1:

    <add baseAddress = "net.tcp://computername:7777/service1/" />
    <endpoint address = "/service1" ... />

for service 2:

    <add baseAddress = "net.tcp://computername:7777/service2/" />
    <endpoint address = "/service2" ... />  

(why the first erroneous way still works when all is in one process, i think it's related to the way port sharing routes the traffic on a process based way).

Thanks again