Recently we had an issue with some BizTalk receive location (WCF-Custom). They all went down with a specific error message:
The Messaging Engine failed to add a receive location “abcdefg” with URL “net.tcp://localhost:55555/xxxx/yyyy” to the adapter “WCF-NetTcp”. Reason: “System.ServiceModel.AddressAlreadyInUseException: There is already a listener on IP endpoint 0.0.0.0:55555. This could happen if there is another application already listening on this endpoint or if you have multiple service endpoints in your service host with the same IP endpoint but with incompatible binding configurations. —> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted
This is an indication that there’s already a process running that is registered on that specific port. The art is only to find out which.
Here the buildin tool netstat proves to be really helpful. Above in the error message the port is named as 55555. So, let’s search for this:
Then, this process id then can be used to identify the process that has this port bound. In our case it was another BizTalk host instance that consumed it. So restarting the host process and then starting the host instance serving WCF-Custom did the trick.
It looks the BizTalk host instances choose their port bindings from a range of ports and thus it is possible that other processes bind to ports that are in use by other processes or adapters.