Deux applications peuvent partager un même port WCF NetTcpBinding si elles utilisent différentes adresses de point final?

StackOverflow https://stackoverflow.com/questions/1319390

Question

J'ai un scénario de client et le serveur, où un service est installé sur le client et un autre service sur le serveur. Je n'ai pas des problèmes lorsque ceux-ci sont installés sur des machines différentes. Cependant, je voudrais être également en mesure d'installer à la fois le service client et le service serveur sur la même machine. Je pourrais les mettre à utiliser des ports différents, mais je voudrais y arriver en utilisant un seul port.

Je l'ai activé et démarré le service service de partage de Port Net.Tcp de Windows. Je commence le service Serveur premier. Lorsque je tente de démarrer le service client je reçois l'exception suivante lors de l'exécution serviceHost.Open ():

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

Voici le code source. Les deux utilisent le serveur et le client des adresses différentes du point final comme suit:

Service Server:

ServiceHost serviceHost = new ServiceHost(typeof(ServerService),
    new Uri("net.tcp://localhost:50000");
NetTcpBinding binding = new NetTcpBinding();
serviceHost.AddServiceEndpoint(typeof(IServerService), 
    binding, "ServerService");
serviceHost.Open();

Service Client:

ServiceHost serviceHost = new ServiceHost(typeof(ClientService),
    new Uri("net.tcp://localhost:50000");
NetTcpBinding binding = new NetTcpBinding();
serviceHost.AddServiceEndpoint(typeof(IClientService),
    binding, "ClientService");
serviceHost.Open();
Était-ce utile?

La solution

Je viens résolu ce faire différent de Uri la base lors de l'instanciation du ServiceHost. Code révisé suit:

Serveur

ServiceHost serviceHost = new ServiceHost(typeof(ServerService),
    new Uri("net.tcp://localhost:50000/Server");
...

Client

ServiceHost serviceHost = new ServiceHost(typeof(ClientService),
    new Uri("net.tcp://localhost:50000/Client");
...

Autres conseils

Cela devrait également aider ... version de travail du partage des ports TCP fait dans le code (vb.net)

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top