web-dev-qa-db-ja.com

WSDLファイルからVisual StudioでWebサービスプロキシを作成する

私のアプリケーションは、オンラインWSDL定義を持たないWebサービスと通信する必要があります。ただし、開発者はWSDLファイルを提供してくれました。

パブリックWSDLを使用すると、Visual Studioはサービス参照ウィザードを使用してこのコードを生成できます。ただし、パブリックWSDLがなければ機能しないようです。

このWSDLファイルを使用して、このWebサービスと通信するためのコードを生成するにはどうすればよいですか?

99
Anne

WSDL.exe を使用してから、生成されたファイル(.cs)をプロジェクトに含めてみてください。

Visual Studioコマンドプロンプトを起動し([スタート]メニューの[Visual Studio /ツール]の下)、次を入力します。

>wsdl.exe [path To Your WSDL File]

それはファイルを吐き出し、それをコピー/移動してプロジェクトに含めます。そのファイルには、サービスのプロキシであるクラスが含まれており、そのクラスのインスタンスを起動し、その場で設定できるURLプロパティと、呼び出すことができる多くのメソッドを持っています。また、サービスインターフェイスを介して渡されるすべて/すべての複雑なオブジェクトのクラスを生成します。

113
Andrew M

WSDL.exeを使用しても機能しませんでした(型が見つからないというエラーが表示されました)が、VSでプロジェクトを右クリックし、[サービス参照の追加]を選択できました。 [アドレス]フィールドにwsdlファイルへのパスを入力し、[実行]をクリックします。それはすべての適切なタイプを見つけることができるようで、私のプロジェクトにクラスを直接追加しました。

132
jeffaudio

補足:ローカルにallファイルがある場合(wsdlファイルだけでなくxsdファイルも)、wsdl.exeをその方法で呼び出すことができます。

wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl]

これにより、wsdl.exeはすべての依存関係をローカルで解決し、プロキシクラスを正しく生成できます。

たぶんそれは誰かをいくらか節約するでしょう-それはサービスがオンラインで利用できないときの「行方不明のタイプ」エラーを解決します。

13
Jarek Mazur

.NET Framework SDKに付属の WSDL To Proxyクラスツール を試してください。使用したことはありませんが、必要なもののように見えます。

3
Steve Danner

コマンドラインからWCFプロキシを作成するための Microsoft Doc があります。

wsdl.exeのローカルコピーは、次のような場所にあります:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools詳細はこちら

最終的に、Commandは次のようになります。

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\wsdl.exe"
 /language:CS /n:"My.Namespace" https://www.example.com/service/wsdl
1
Serj Sagan

ファイルをディスクに保存し、次をURLとして使用します。

file://your_path/your_file.wsdl
0
Evan Camilleri