2011-07-06 21 views
5

私はFedex webserviceで作業しています。彼らはhttp://hostServer/WebserviceRoot/WebServiceName.asmxのようなwebservice URLを提供しませんでした。むしろ彼らは.wsdlファイルを提供しました。WSDLからWebサービスプロキシを生成するC#

.wsdlファイルからWebサービスプロキシクラスを生成し、私のプロジェクトへのWebサービス参照を追加することで私を導いてください。

私は

wsdl /l:cs /protocol:SOAP /o:MyProxy.cs mywsdl.wsdl 

ようwsdlからプロキシを生成するために知っているが、私はそれが何を知りたいです。それはプロキシクラスを作成するかもしれませんが、どのように私のプロジェクトにWebサービス参照を追加できますか?

+0

私は、最初にサーバーではなく、そのWSDLから直接_client_を作成する必要があると思います。そして、このコマンドはクライアントを作成しているようです。あなたはほぼ完了しているはずです( - : –

答えて

11

プロキシクラスを手動で作成する場合は、プロジェクトに追加するだけで済みます。

wsdl実行可能ファイルは、ダウンロードしたWSDLファイル( "mywsdl.wsdl")を読み込んでプロキシコードを生成します。これは、Visual StudioのAdd Web Referenceメカニズムを使用してこのプロセスを自動化します。あなたのC#言語の例( "MyProxy.cs")。 "MyProxy.cs"をプロジェクトに追加し、プロジェクト内で生成されたクライアントのインスタンスをインスタンス化することができます。

5

Visual Studioのコマンドプロンプトからwsdl.exeコマンドを使用します。

例:

WSDL c:/myfile.wsdl 
1

Webサービスに対処するには、2つの方法が通常あります。 1つは、あなたが述べたように、WebサービスURL ../service.asmxを使用します。この方法では、ビジュアルスタジオプロジェクトで「Web参照の追加」を使用するだけで、常にライブWebサービスに接続できます。これははるかに簡単ですが、Webサービスが何かを変更することを決定した場合は、参照を変更する必要があります。プロジェクトを再コンパイルして再デプロイします。

WSDLファイルのローカルコピーを保存するとき、彼らはライブWSDLで必須フィールドを導入した場合、あなたはまだ限り、基本的なコードベースはまだそれで動作するように保護されています。受け入れられた答えのように独自のproxy.csクラスを生成している場合は、クラスをプロジェクトに手動で追加する必要があることを除いて、Visual Studioを使用して追加するのと同じように機能します。

はまた、私はあなたがWSDLファイルに<soap:address location="http://testsite.com/test.asmx" />から全体のWebサービスのURLを取得することができると信じて。通常は、変更に追いつくつもりならば、ローカルのWSDLファイルを使用するのは良い方法ではありません。私はあなたがその問題を抱えていることは疑う余地がありません。それはおそらく時間のテストを通して立っているでしょう。

関連する問題