2011-09-19 291 views
12

对于使用WSDL的Web服务调用,出现错误Cannot find dispatch method for {http://ws.somecompany.com/services}ValidateUser,这是什么意思?这是否意味着它找不到ValidateUserWSDL找不到调度方法

回答

17

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

+0

如果您使用的是Visual Studio,请快速修复此问题。右键单击解决方案资源管理器中Web References文件夹中的Web服务,选择更新Web服务。等待VS完成该过程,并且完成 –

+0

在我的情况下,问题是在''的''中引用的''的''中引用的''没有与''相同的**命名空间**。它也应该有相同的名称以避免包装输入参数。 – msa

14

我有类似的问题和挣扎,天。但它是一个简单的错误,而不是:

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

应该

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

我没有检查我的WSDL清楚。

+1

是的,那些是讨厌的。另外一个常见的错误是忽略名称空间URI中的http和https之间的区别。 – vanto

2

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

1

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

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

0

我的五十分钟,我得到了同样的错误信息,但我的情况还是不同于以上所有,所以希望它可以帮助某人。

我有.wsdl文件,在ws的另一边的同事改名为某个元素时,我的知识过时了。不幸的是,当我将.wsdl与他们进行比较时,更改不可见,因为.wsdl文件具有实际包含重命名元素的.xsd导入。在发现变化之后,我更新了我的.xsd文件和tada!错误消失了,它工作。

0

在我的情况下,下面的异常被扔即使我提供的所有参数

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

敲我的头几个小时后,就加入了\在初始化SoapClient的解决了这个问题。

来源:

$client = new SoapClient($soapURL); 

要:

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

我有同样的问题在我的.NET应用程序,在我的情况下设置的网址同为 “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是web方法。