質問
ご協力ありがとうございます。
私は外部クライアント用のwcf Webサービスを作成しています。 クライアントはwsdlのコピーを要求しています。 現在、クライアントにサービスへのアクセスを提供できるようになるのを待っています。
サービスを実行しているローカルWebサーバーにアクセスするとき( http://localhost/Services.svc?wsdl )表示されます wsdl、提供されたデータにはメソッドシグネチャ(.svcコードビハインドから)が含まれています。 含まれているモデルオブジェクト(Customer、Order、ext)は含まれていません。
これらのオブジェクトを取得するには、表示されたデータで参照を見つけてURLに移動します
すべての必要な情報をクライアントに提供して、クライアントがwsdl全体を持つようにする メインスキーマとインポートされた各スキーマを提供する必要がありますか?
またはこれを達成する他の方法はありますか(クライアントがサーバーにアクセスする以外)
ie:それらすべてを1つのファイルにパッケージ化する方法はありますか?
(これらの各ファイルを抽出するために何かが利用できるようです?)
各ファイルに.zipを指定する場合、それで十分ですか?
ありがとう、 スティーブン
解決
WCFは、既にお気づきのとおり、WSDLとXSD(送信されるデータを記述するXMLスキーマ)をさまざまな部分にパッケージ化します。これらは、追加のhrefを使用してメインWSDLから参照されます。
またはさらに良い:" svcutil -metadata"を実行できます。サービス実装を含むDLLまたはEXEに対するコマンドラインでのコマンド-これにより、svcutilコマンドを実行するディレクトリに必要なすべてのファイル(通常は複数のWSDlと複数のXSD)が作成されます。これは通常、?wsdl URLからWSDLファイルとXSDファイルをつなぎ合わせるよりも信頼性の高い方法です(通常、1つまたは2つのファイルが欠落します)。
マーク
他のヒント
参照するすべてのサブWSDLとXSDを手動でダウンロードした場合、それは機能します。控えめに言っても面倒です。
検討する価値があるオプションは、Christian Weyerのを使用することです。 WCF拡張機能:WSDLをフラット化して、WCFがすべてを単一のファイルに生成し、クライアントに提供するようにします。