WSDL无法找到调度方法

时间:2011-09-19 23:16:26

标签: soap wsdl

对于使用WSDL的Web服务调用,我收到错误Cannot find dispatch method for {http://ws.somecompany.com/services}ValidateUser,这究竟是什么意思?这是否意味着找不到ValidateUser

9 个答案:

答案 0 :(得分:19)

这通常意味着SOAP框架找不到应该通过此请求调用的操作。 SOAP框架通常检查消息以查找有关如何将消息路由到操作的指针。出现此错误的原因主要是配置问题(不同的命名空间,不同的编码(RPC与doc / lit),WS-Addressing与普通SOAP等的使用。)

答案 1 :(得分:16)

我有一个类似的问题,并在苦苦挣扎,谷歌搜索1天。但这是一个简单的错误,而不是:

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

应该是

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

我没有清楚地检查过我的WSDL。

答案 2 :(得分:2)

在我的情况下,我通过确保我的配置文件app.config或web.config取决于您的客户端具有正确的端点来解决。我的端点中的地址错误。我改变它,它工作正常。

答案 3 :(得分:1)

我也在这个问题上失去了一天,尽管根本原因不同。

在我们的案例中,两个类似的端点网址已在属性文件中混淆了。这两个服务都存在并且正在运行,但是WSDL并不匹配,因此我们得到了这个SOAPFaultException而不是ConnectionException:“找不到调度方法”。

答案 4 :(得分:1)

我的五十分钱,我收到了同样的错误信息,但我的情况与上述情况有所不同,所以希望它可以帮助某人。

我有.wsdl文件,当ws另一边的同事重新命名某个元素时,它已经过时了。不幸的是,当我将.wsdl与他们进行比较时,变化是不可见的。因为.wsdl文件的.xsd导入实际上包含了重命名的元素。在我找到更改后,我更新了我的.xsd文件和tada!错误消失了,而且有效。

答案 5 :(得分:0)

在我的情况下,即使我提供了所有参数

,也会抛出以下异常
SoapFault exception: [S:Client] Cannot find dispatch method for {}parameters in

在敲了几个小时后,只需添加一个\,同时初始化SoapClient解决了这个问题。

来自:

$client = new SoapClient($soapURL);

要:

$client = new \SoapClient($soapURL);

答案 6 :(得分:0)

我在我的.NET应用程序中遇到了同样的问题,在我的情况下设置url和" http://x-xxx-xx-xx-01:8080//TestProject/testproject?wsdl" (虚拟网址)解决了以下代码中的问题。

Vb.Net

author

这里,WSTestProject是WebService NameSpace,testproject是web方法。

答案 7 :(得分:0)

我正在使用一个伪装客户端作为肥皂,我遇到了类似的问题,向JAXB请求和响应对象添加正确的名称空间可以解决该问题。

答案 8 :(得分:0)

问题出在我的环境中,是php中的wsdl缓存。客户端未选择更新的wsdl,而是指旧的wsdl。

在开发和测试Web服务时,您可以执行以下任一操作,因为在更新/实现Web服务期间wsdl会发生变化

  • 添加WSDL_CACHE_NONE来创建客户端

    $myServices_client = new SoapClient($myServices_wsdl_URL, array('cache_wsdl' => WSDL_CACHE_NONE) );
    
  • 设置初始化参数

    ini_set("soap.wsdl_cache_enabled", 0);