WSDL无法找到调度方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WSDL无法找到调度方法相关的知识,希望对你有一定的参考价值。

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

答案

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

另一答案

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

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

它应该是

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

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

另一答案

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

另一答案

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

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

另一答案

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

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

另一答案

在我的情况下,即使我提供了所有参数,以下异常仍在抛出

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

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

从:

$client = new SoapClient($soapURL);

至:

$client = new SoapClient($soapURL);
另一答案

我在.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方法。

以上是关于WSDL无法找到调度方法的主要内容,如果未能解决你的问题,请参考以下文章

WSDL2Java抛出无法找到主类:org.apache.axis.wsdl.WSDL2Java

C# 的 WSDL 生成器

svcutil 无法从 wsdl 文件生成代码

C#在做WSDL生成客户端代码,无法添加soapheader

axis2的wsdl无法使用eclipse axis1插件来生成client--解决方法

在 VS2017 中无法从 WSDL 生成代理