WSDL无法找到调度方法

问题描述 投票:14回答:7

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

soap wsdl
7个回答
19
投票

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


16
投票

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

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

它应该是

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

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


2
投票

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


1
投票

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

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


1
投票

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

我有.wsdl文件,当w的另一边的同事重新命名某个元素时,它已经过时了。不幸的是,当我将.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应用程序中遇到了同样的问题,在我的情况下,设置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 NameSpace,testproject是web方法。

© www.soinside.com 2019 - 2024. All rights reserved.