web-dev-qa-db-fra.com

WSDL Impossible de trouver la méthode de répartition pour

Pour un appel de service Web utilisant un WSDL, l'erreur Cannot find dispatch method for {http://ws.somecompany.com/services}ValidateUser apparaît, qu'est-ce que cela signifie exactement? Cela signifie-t-il qu'il ne peut pas trouver ValidateUser?

12
Johnny Klassy

Cela signifie généralement que la structure SOAP n'a pas pu trouver l'opération devant être appelée via cette demande. Une structure SOAP inspecte généralement le message pour rechercher des pointeurs sur la manière de router le message vers l'opération. Les raisons de cette erreur sont principalement liées à des problèmes de configuration (différents espaces de noms, différents codages (RPC vs doc/lit), utilisation de WS-Addressing par rapport à un utilisateur SOAP, etc.).

19
vanto

J'ai eu un problème similaire et luttant, googler pendant 1 jour. Mais c'était une simple erreur qu'au lieu de:

{http://ws.somecompany.com/services}ValidateUser

CA devrait etre

{http://ws.somecompany.com/services/}ValidateUser

Je n'avais pas vérifié mon WSDL clairement.

16
Kulai

Dans mon cas, j'ai résolu le problème en m'assurant que mon fichier de configuration soit app.config ou web.config, en fonction du point de terminaison correct de votre client. J'avais une mauvaise adresse dans mon terminal. Je l'ai changé et cela a bien fonctionné. 

2
Ziggler

Mon cinquante cent, j'ai reçu le même message d'erreur mais mon cas était encore différent de tout ce qui précède, alors espérons-le, cela pourrait aider quelqu'un.

J'avais un fichier .wsdl, qui est devenu obsolète à mon insu lorsque des collègues de l'autre côté de ws ont renommé un élément. Malheureusement, les modifications n'étaient pas visibles lorsque j'ai comparé .wsdl à la leur, car le fichier .wsdl comportait une importation .xsd contenant en fait un élément renommé. Après avoir trouvé le changement, j'ai mis à jour mon fichier .xsd et mon tada! l'erreur est partie et cela a fonctionné.

1
Padvinder

J'ai aussi perdu un jour à cause de ce problème, même si sa cause fondamentale était différente.

Dans notre cas, deux URL de points de terminaison similaires ont été mélangées dans le fichier de propriétés. Les deux services étaient présents et en cours d'exécution, mais les WSDL ne correspondaient pas. Par conséquent, au lieu d'une exception ConnectionException, nous obtenions cette exception SOAPFaultException: "Impossible de trouver la méthode d'envoi".

1
fahran

J'avais le même problème dans mon application .NET. Dans mon cas, définir l'url de la même manière que " http: // x-xxx-xx-xx-01: 8080 // TestProject/testproject? Wsdl " (URL factice) résolu le problème dans le code ci-dessous.

Vb.Net

Dim rptGen as WSTestProject.testproject = Nothing
rptGen = New WSTestProject.testproject With {
        .Url = "http://x-xxx-xx-xx-01:8080//TestProject/testproject?wsdl",
        .Timeout = 1200000
        }

Ici, WSTestProject est le WebService NameSpace et testproject est la méthode Web.

0
Kiran Modini

Dans mon cas, l'exception suivante a été lancée même si j'ai fourni tous les paramètres

SoapFault exception: [S:Client] Cannot find dispatch method for {}parameters in

Après quelques heures à me cogner la tête, ajouter un\tout en initialisant SoapClient a résolu le problème. 

De: 

$client = new SoapClient($soapURL);

À:

$client = new \SoapClient($soapURL);
0
Zolbayar