I have a WCF service hosted inside a Windows service. and I am using NetTcpBinding to connect a WPF client application to this service. I have a callback contract to allow push notifications back to the client, which is working just fine, except when there is more than one client running on the same machine (for example, two client instances running in separate remote desktop sessions). In those circumstances, it appears that only one of the clients is receiving the callback messages. It seems that the problem is caused by the two clients exposing the same callback address, and so the message only goes to one of the listeners.
For example, let's say I have my WCF service hosted on machine 'fakeserver' and 2 WPF clients both running on machine 'fakeclient'. The address that clients use to connect to the WCF service is 'net.tcp://fakeserver:1234/MyService'. Both clients are able to connect to the service just fine. But when the server sends a callback, it's going to send it to 'net.tcp://fakeclient:1234/MyCallback' (since NetTcpBinding is duplex by default, we don't have to specify a separate port for sending callbacks), which has two different clients listening for traffic. Only one of those clients receives the message.
If I were using WSDualHttpBinding, I would be able to specify different ports for the client callback address, thus making the two client callback addresses unique. As it stands, though, I believe both client callback addresses are the same, which is why the message only goes to one client (the last one registered, usually).
How can I ensure that two (or more) WPF clients on the same machine are treated distinctly and each receive any callback messages pushed by the service while still using NetTcpBinding?