WSDL

2011-09-19 5 views
12

のディスパッチ方法が見つかりませんWSDLを使用したWebサービスコールでは、エラーCannot find dispatch method for {http://ws.somecompany.com/services}ValidateUserが発生していますが、それはどういう意味ですか? ValidateUserが見つかりませんか?WSDL

答えて

17

これは、通常、SOAPフレームワークがこの要求によって呼び出される操作を検出できなかったことを意味します。 SOAPフレームワークは通常、メッセージを検査して、メッセージを操作にルーティングする方法に関するポインタを見つけます。このエラーの原因は主に構成上の問題です(異なる名前空間、異なるエンコード(RPC対doc/lit)、WS-AddressingとプレーンSOAPなどの使用)

+0

Visual Studioを使用している場合は、ここで簡単に修正します。ソリューションエクスプローラのWeb ReferencesフォルダでWebサービスを右クリックし、Webサービスの更新を選択します。 VSがプロセスを完了して完了するまで待ってください –

+0

私の場合、問題は、の ''の ''は ''の ''で参照されていませんでした同じ**名前空間**は、 ''と同じです。また、入力パラメータの折り返しを避けるために同じ名前を付ける必要があります。 – msa

14

私は同様の問題を抱え、1日。それは私がはっきりと私のWSDLをチェックしていなかった

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

でなければなりません

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

:しかし、それは代わりに、単純なミスでした。

+1

はい、それらは厄介です。また、よくある間違いは、名前空間URIのhttpとhttpsの違いを見落とすことです。 – vanto

2

私の場合、クライアントに応じてapp.configまたはweb.configのいずれかの設定ファイルが正しいエンドポイントを持っていることを確認して解決しました。私のエンドポイントに間違ったアドレスがありました。私はそれを変更し、それは正常に働いた。

1

根本的な原因は異なりますが、この問題では1日も負けました。

私たちの場合、2つの同様のエンドポイントURLがプロパティファイルに混在していました。両方のサービスが存在し、実行されていましたが、WSDLが一致しなかったため、ConnectionExceptionではなく、「ディスパッチメソッドが見つかりません」というSOAPFaultExceptionが発生しました。

0

私の50セントは、同じエラーメッセージが表示されていますが、私のケースは上記のすべてとはまだ異なりますので、それは誰かを助けるかもしれません。

私はwsdlファイルを持っていましたが、wsの反対側の同僚が何らかの要素の名前を変更したときに私の知らないうちに時代遅れになっていました。残念ながら、.wsdlファイルに実際に名前が変更された要素が含まれていた.xsdインポートがあったため、.wsdlとの比較では変更が表示されませんでした。変更が見つかったら、.xsdファイルとtadaを更新しました。エラーがなくなり、エラーが発生しました。私の場合は

0

、次の例外が、私はのSoapClientの問題を解決した初期化中だけ\を追加し、数時間、私の頭を叩いた後、すべてのパラメータ

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

を供給したにも投げていました。

から:

$client = new SoapClient($soapURL); 

へ:

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

私は、私の場合は私の.NETアプリケーションで同じ問題が、 "http://x-xxx-xx-xx-01:8080//TestProject/testproject?wsdl" と同じURLを設定する(ダミー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は、Webサービスの名前空間とtestprojectは、Webメソッドです。