3

外部 Axis への Web 参照を追加しようとしています - 生成された Web サービスを Visual Studio 2008 ソリューションに追加しようとしています。受信した URL は、ブラウザから正常にアクセスできる WSDL を指しており、WService のすべての詳細が表示されます。使用した Axis のバージョンは 1.4 でした。

しかし、wsdl.exe を実行するか、VS2008 で参照を追加すると、左側にメソッド リストが表示されますが、次のようなエラーが表示されます。


URL http://............?wsdlのドキュメントは、既知のドキュメント タイプとして認識されませんでした。

既知の各タイプのエラー メッセージは、問題の解決に役立つ場合があります。

  • 「ディスコ ドキュメント」からのレポートは、「URL http://........?wsdlのディスカバリー ドキュメントが見つかりませんでした。」です。
    • ドキュメント形式が認識されません。
  • 「WSDL ドキュメント」からのレポートは、「XML ドキュメントにエラーがあります (510、62)」です。
    • 名前空間プレフィックス 'impl:urn' が定義されていません。
  • 「XML スキーマ」からのレポートは、「W3C XML スキーマのルート要素は、その名前空間は「http://www.w3.org/2001/XMLSchema」である必要があります」です。

そして先に進めません。ここで SO に関する他の投稿を見ましたが、それらはすべて、Web 参照が既に追加されている状況に言及しています。

よろしくお願いします!

A.

編集: ありがとう、実際には dovholuk によって何らかの方法で提案されたように、問題を「手で」解決することができました: wsdl を取得し、ファイル システムにローカルに保存してから、wsdl.exe ができるまで手動で変更しました。クラスを生成します。次に、プロジェクトにクラスを追加し、Web サービスを呼び出すことができました。

チャオ・アンドレア

4

1 に答える 1

3

これは、軸 1.4 を使用しているときによく発生する問題です。私は個人的に、このためにエミット機能を使用する代わりに、wsdl と xsd を常に手作業でコーディングしています。また、その他の理由も...

?wsdl を開いて解析を開始すると、そこに「空」の列挙があるに違いありません。何かのようなもの:

<xs:simpleType name="MyType">
</xs:simpleType>

あなたがwsdlを投稿していないので、私は本当にここで推測しています(できるかどうかわかりませんか?)が、wsdl/xsdを書き、単純な型に制限があると、この正確な動作が得られます...次のように:

<xs:simpleType name="IpAddress">
  <xs:restriction base="xs:string">
    <xs:pattern value="\d*"> (note this is not 'correct' i'm just 'for instancing')
  </xs:restriction>
</xs:simpleType>

(それが無効な xsd である場合、私を殺さないでください - 私はちょうど記憶から行っています... :) )

Axis はこれを吸い込み、オブジェクトを作成しますが、?wsdl を使用して放出すると、「無効」になります....

したがって、私のアドバイスは、そのwsdlをくまなく調べることです-特に「不完全な」スキーマ定義のタイプセクション...それらをJavaから取り出して、C#で機能するまで「再試行」してください....

それが役立つかどうかはわかりませんが、他のアイデアが必要な場合は、投稿してください...

于 2009-09-26T14:55:50.900 に答える