2010-11-29 16 views
91

私のアプリケーションは、オンラインのWSDL定義を持っていないWebサービスと対話する必要があります。しかし、開発者は私にWSDLファイルを提供しました。WSDLファイルからVisual StudioでWebサービスプロキシを作成します

公開WSDLを使用すると、Visual StudioではService Referenceウィザードを使用してこのコードを生成できます。しかし、公開WSDLなしでは動作しないようです。

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

答えて

104

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

その後、消防アップ(スタートメニュー内のVisual Studio /ツールの下)のVisual Studioコマンドプロンプトを使用すると、/移動をコピーして、プロジェクトに含めるファイルを、吐き出すだろうと

>wsdl.exe [path To Your WSDL File] 

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

+2

ありがとうございます!また、エクスポートされたファイルのパスには/ oパラメータを使用できます。 > wsdl.exe http://www.example.com/service.wsdl/o:C:\ Users \ X \ Desktop – gkon

3

.NET Framework SDKに同梱されているWSDL To Proxy class toolを試してみてください。以前はそれを使ったことはありませんでしたが、必要なもののように見えます。

120

WSDL.exeを使用すると、私にはうまくいかなかった(欠落しているタイプに関するエラーが表示されました)が、私はVSで自分のプロジェクトを右クリックして "サービスリファレンスの追加"を選択できました。私はアドレスフィールドにwsdlファイルへのパスを入力し、 "Go"を押します。それはすべての適切な型を見つけることができるように思え、クラスを自分のプロジェクトに直接追加しました。

+3

同じシナリオに直面し、あなたの提案は私に多くの欲求不満とおそらくいくらかの髪を救いました。あなたに十分に値する担当者が与えられています。 (間接的な結果として、あなたはすべてのサイトで+100を取得しました:)) –

+0

ファイルをインポートしようとしましたが、私のコードでクラスを見ることができません – guiomie

+1

MSVC 2015を使ってこのメソッドを試しましたが、URLを使ってwsdlファイルを処理することを拒否しました。だから、私はAndrew Mによって記述された方法を使用しました。 – Hermann

0

Webサービスのための真のバインディングURLがファイルに位置しているので、あなたのローカルマシンからの簡単な手順を行うことができ:

1)は、例えば、ローカルコンピュータにファイルを保存します。

C:\Documents and Settings\[user]\Desktop\Webservice1.asmx 

2)Visual Studioでプロジェクトを右クリックし、[Web参照の追加]を選択すると、ダイアログが開きます。 URLボックスにコピーC上のローカルファイルの場所で

3):\ DocumentsとSettings [ユーザー] \デスクトップ\ Webservice1.asmx、次は

4)今、あなたは関数が表示されます、選択しクリックしてご参照の名前をクリックしてください。

5)完了です!とにかく、サービスの真のURLがBindingセクションのファイルにあるので、ローカルファイルを使用することを心配する必要はありません。

+2

これは[この既存の回答](http://stackoverflow.com/a/14360303/447356)で既に提案されています。なぜ繰り返しますか? –

13

wsdl.exeがローカルと正しくすべての依存性を解決することができますこの方法は、プロキシクラスを生成し

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

あなたがそのようにwsdl.exeを呼び出すことができ、すべてのローカルファイルの(WSDLファイルだけでなく、XSDファイルだけでなく)を持っています。

サービスをオンラインで利用できない場合、「タイプが見つからない」というエラーが発生する可能性があります。

関連する問題