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


101

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

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

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

回答:


116

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

Visual Studioコマンドプロンプトを起動し(スタートメニューのvisual studio / toolsの下)、次のように入力します。

>wsdl.exe [path To Your WSDL File]

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


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

2
必要に応じて、すべてのクラスをカバーする名前空間を手動で追加して、生成される同様のファイルとの競合を防止します。
Blue Clouds

138

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


3
同じシナリオに直面し、あなたの提案は私に多くのフラストレーションとおそらくいくつかの髪を救いました。ふさわしい担当者があなたに与えられました。(間接的な結果として、すべてのサイトで+100が得られます:))
シャドウウィザードは

私はこれを試して、ファイルをインポートしましたが、コードにクラスが表示されません
guiomie

1
MSVC 2015を使用してこの方法を試しましたが、URLを使用してwsdlファイルを処理することを拒否しました。そこで、Andrew M.によって記述された方法を使用しました
Hermann

1
Webサービスにアクセスする権限のない開発用PCからこれを試しました。.wsdlファイルはローカルにありますが、「移動」をクリックするとサービスに接続しようとしました。そのため、参照を追加できませんでした。この状況では、Andrew M.の解決策が優先されると思います。それはうまくいきました。
gkonuralp

@jeffaudio im同様の問題に直面しています。Webプロジェクトのサービス参照を追加できますが、wsdl.exeを使用してもプロキシファイルを生成できません。なにか提案を ..???
prakash r

15

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

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

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

多分それは誰かをいくらか時間を節約するでしょう-それはサービスがオンラインで利用可能ではないときに「欠落しているタイプ」エラーを解決します。



2

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

のローカルコピーは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

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

file://your_path/your_file.wsdl

問題のファイルを最初に認証後にダウンロードする必要があったため、これは私にとってはうまくいった唯一のものです。ありがとう!
ケビンラドクリフ

-1

Webサービスの実際のバインディングURLはファイル内にあるため、ローカルマシンから次の簡単な手順を実行できます。

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

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

2)Visual Studioでプロジェクトを右クリックし、[Web参照の追加]を選択すると、ダイアログが開きます。

3)URLボックスでC:\ Documents and Settings [user] \ Desktop \ Webservice1.asmxの上のローカルファイルの場所をコピーし、[次へ]をクリックします

4)これで、関数が表示されます。参照の名前を選択し、[参照の追加]をクリックします

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


2
これはすでにこの既存の回答で提案されていましたが、なぜ繰り返すのですか?
Shadow WizardはEar For You

質問がwsdlに関するものであるのに、なぜasmxファイルなのですか?
Blue Clouds
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.