私のアプリケーションは、オンラインWSDL定義を持たないWebサービスと通信する必要があります。ただし、開発者はWSDLファイルを提供してくれました。
パブリックWSDLを使用すると、Visual Studioはサービス参照ウィザードを使用してこのコードを生成できます。ただし、パブリックWSDLがなければ機能しないようです。
このWSDLファイルを使用して、このWebサービスと通信するためのコードを生成するにはどうすればよいですか?
WSDL.exe を使用してから、生成されたファイル(.cs)をプロジェクトに含めてみてください。
Visual Studioコマンドプロンプトを起動し([スタート]メニューの[Visual Studio /ツール]の下)、次を入力します。
>wsdl.exe [path To Your WSDL File]
それはファイルを吐き出し、それをコピー/移動してプロジェクトに含めます。そのファイルには、サービスのプロキシであるクラスが含まれており、そのクラスのインスタンスを起動し、その場で設定できるURLプロパティと、呼び出すことができる多くのメソッドを持っています。また、サービスインターフェイスを介して渡されるすべて/すべての複雑なオブジェクトのクラスを生成します。
WSDL.exeを使用しても機能しませんでした(型が見つからないというエラーが表示されました)が、VSでプロジェクトを右クリックし、[サービス参照の追加]を選択できました。 [アドレス]フィールドにwsdlファイルへのパスを入力し、[実行]をクリックします。それはすべての適切なタイプを見つけることができるようで、私のプロジェクトにクラスを直接追加しました。
補足:ローカルにallファイルがある場合(wsdlファイルだけでなくxsdファイルも)、wsdl.exeをその方法で呼び出すことができます。
wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl]
これにより、wsdl.exeはすべての依存関係をローカルで解決し、プロキシクラスを正しく生成できます。
たぶんそれは誰かをいくらか節約するでしょう-それはサービスがオンラインで利用できないときの「行方不明のタイプ」エラーを解決します。
.NET Framework SDKに付属の WSDL To Proxyクラスツール を試してください。使用したことはありませんが、必要なもののように見えます。
コマンドラインから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
ファイルをディスクに保存し、次をURLとして使用します。
file://your_path/your_file.wsdl