WSDL Не удается найти способ отправки для - PullRequest
14 голосов
/ 20 сентября 2011

При вызове веб-службы с использованием WSDL я получаю сообщение об ошибке Cannot find dispatch method for {http://ws.somecompany.com/services}ValidateUser, что это значит точно?Значит ли это, что он не может найти ValidateUser?

Ответы [ 7 ]

19 голосов
/ 21 сентября 2011

Это обычно означает, что инфраструктура SOAP не смогла найти операцию, которая должна быть вызвана с помощью этого запроса. Инфраструктура SOAP обычно проверяет сообщение, чтобы найти указатели о том, как направить сообщение в операцию. Причинами этой ошибки являются в основном проблемы конфигурации (разные пространства имен, разные кодировки (RPC или doc / lit), использование WS-Addressing или простой SOAP и т. Д.)

16 голосов
/ 10 июля 2012

У меня была похожая проблема и я боролся, гуглил 1 день. Но это была простая ошибка, вместо:

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

должно быть

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

Я не очень четко проверил свой WSDL.

2 голосов
/ 10 апреля 2013

В моем случае я решил, убедившись, что мой конфигурационный файл app.config или web.config в зависимости от вашего клиента имеет правильную конечную точку. У меня был неправильный адрес в моей конечной точке. Я изменил его, и он работал нормально.

1 голос
/ 21 августа 2015

Мне пятьдесят центов, я получил такое же сообщение об ошибке, но мой случай все же отличался от всего вышеперечисленного, поэтому, надеюсь, он может кому-то помочь.

У меня был файл .wsdl, который устарел без моего ведома, когда коллеги подругая сторона ws переименовала некоторый элемент.К сожалению, изменения не было видно, когда я сравнивал .wsdl с их, потому что .wsdl файл имел импорт .xsd, который фактически содержал переименованный элемент.После того, как я нашел изменения, я обновил свой файл .xsd и Tada!ошибка ушла и это сработало.

1 голос
/ 05 февраля 2014

Я также потерял один день на эту проблему, хотя и с другой основной причиной.

В нашем случае два похожих URL-адреса конечных точек смешались в файле свойств.Обе службы присутствовали и работали, но WSDL не совпадали, поэтому вместо ConnectionException мы получили следующее SOAPFaultException: «Не удается найти метод отправки».

0 голосов
/ 04 января 2018

У меня была такая же проблема в моем приложении .NET, в моем случае настройка URL такая же, как "http://x -xxx-xx-xx-01: 8080 // TestProject / testproject? Wsdl " (фиктивный URL) решил проблему в следующем коде.

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
        }

Здесь WSTestProject - это пространство имен WebService, а testproject - веб-метод.

0 голосов
/ 26 октября 2017

В моем случае следующее исключение было выбрасывать, даже если я предоставил все параметры

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

После нескольких часов стука в голову, просто добавив \ при инициализации SoapClient, решил проблему.

От:

$client = new SoapClient($soapURL);

Кому:

$client = new \SoapClient($soapURL);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...