J'ai le scénario de pontage de protocole WCF suivant: un client WCF utilisant la liaison basicHttp parlant à un service de routage qui transmet la demande au service en utilisant netTcp.WCF 4 Routing Service - problème de pontage de protocole
client < ->basicHttpBinding (SOAP 1.1)
< ->Service Router < ->netTcpBinding (SOAP 1.2)
< ->service
La fonctionnalité de routage fonctionne parfaitement jusqu'à ce que nous exposons le service à notre client C++ qui utilise la bibliothèque gSOAP pour transmettre des messages au service. Si le client C++ communique directement avec le service, l'appel réussit; Cependant, dès qu'il essaie de communiquer via le service de routage, il échoue.
Le service reçoit le message routé mais lance une exception dès qu'il tente de désérialiser le message. Le message d'erreur renvoyé par le service est un System.ServiceModel.Dispatcher.NetDispatcherFaultException
indiquant le "The formatter threw an exception while trying to deserialize the message…"
Le problème semble provoqué par le pontage de protocole. Si je n'utilise pas de pontage de protocole, c'est-à-dire que j'utilise basicHttp tout au long de la chaîne d'appel, le client C++ (et le routage des messages) fonctionne comme prévu.
Je n'arrive pas à résoudre ce problème. Je comprends que le service de routage est conçu pour être un intermédiaire WCF-WCF, mais le problème semble être isolé uniquement pour les appels provenant du client gSOAP C++. J'ai essayé d'utiliser certains outils de test de service Web (soapUI, soapSonar) pour voir si je peux répliquer le problème, mais ils semblent fonctionner correctement. Toute aide ou conseil serait apprécié.
Cordialement, Steve
Quel est le message d'exception/trace de la pile? Toute exception interne? –
Il n'y avait pas d'exception interne. Nous avons partiellement identifié le problème, mais je ne sais toujours pas pourquoi cela se produit, à part le fait que gSOAP ne joue évidemment pas bien avec netTCPBinding.Nous avons résolu ce problème en utilisant basicHttpBinding tout au long de la chaîne d'appel. Pas idéal du point de vue de la performance, mais nous avons au moins une fonctionnalité cohérente pour tous les clients du service. – stephenl