J'ai généré un proxy WCF à partir d'un fichier WSDL, mais maintenant, lorsque j'appelle les méthodes proxy, elles renvoient null. J'ai activé la journalisation des messages et je peux voir que les messages du serveur sont correctement renvoyés.Proxy WCF généré à partir de WSDL, la méthode proxy renvoie la valeur null
J'ai vérifié la réponse de this question, mais dans mon cas au moins le nom de l'objet retourné était le même dans le message et dans le WSDL. Je crois toujours que le problème a à voir avec le fichier WSDL, car il n'est pas récupéré de la manière habituelle à travers l'URL "? Wsdl" (c'est un service web tiers), mais a été donné séparément.
Le type de retour de la méthode est juste une chaîne.
Est-ce que quelqu'un d'autre a eu des problèmes similaires, et quelle était la solution correspondante, le cas échéant? Quelle est la source la plus probable du problème?
Re-edit:
Il est un service Web RPC/encodée. Comme je l'ai écrit, je peux voir la réponse SOAP à travers la journalisation des messages, mais la WCF ne semble pas être capable d'analyser l'information.
La partie du message de la réponse du service se présente comme suit:
<ns1:ServiceResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="the target namespace">
<ns1:ReturnValue xsi:type="xsd:string">
Cependant, lors de l'inspection du message sortant de mon client, il est différent:
<ns1:ServiceRequest soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="the target namespace">
<RequestValue xsi:type="xsd:string" xmlns="">
Alors peut-être le proxy attend la réponse à avoir la même structure d'espace de noms, et échoue donc à l'analyser.
J'ai essayé de changer l'attribut type
à element
dans les définitions de message wsdl, et en ajoutant de nouveaux éléments dans la types
partie de la définition de wsdl, mais le svcutil selfs lors de la génération du proxy, se plaignant qu'il ya un conflit entre le document de style inféré et le style spécifié rpc.
De l'WSDL specification, l'article 3.5:
Si l'utilisation est encodées, chaque partie du message fait référence à un type abstrait en utilisant l'attribut de type.
Mais alors je suis un peu confus, car il ne semble pas avoir été un problème dans ce question. Qu'est-ce qui serait nécessaire pour effectuer un changement similaire, avec la restriction qu'il s'agit d'un service RPC/codé?
Comment avez-vous généré le WSDL? Avez-vous utilisé la commande svcutil ou ajouté le service dans VSS? Et, connaissez-vous le format de la réponse (texte, MTOM?) Et quel type de service web s'agit-il? – K2so
Correct: Comment avez-vous généré la classe à partir du WSDL? – K2so