1

受信ポートがあります。トランスポート用のストアド プロシージャを呼び出すと、受信パイプラインは passthrureceive になります (XMLReceive を試しましたが、さらに多くの問題が発生しました)。フィルターが設定された送信ポートがあり、受信ポートのタイプを取得します。送信ポートにはマップと送信パイプラインがあります。マップは、受信ポートからの xml をフラット ファイル スキーマにマップし、その場所に送信します。送信パイプラインにはフラット ファイル アセンブラーがあります。

したがって、マップは実行されません。送信パイプラインから、ドキュメントと一致しないというエラーが表示されます。いいえ、マッピングされていないため、できません。受信場所の受信パイプラインに XML 逆アセンブラーが必要だと読みました。私はそれを追加しました、そしてそれはちょうど私のメッセージを破壊し始めました. それらは空白のメッセージまたはメッセージ内の " に変わるだけです。したがって、XML 逆アセンブラーは明らかに正しく機能していません。この時点で何をすべきかわかりません。

4

3 に答える 3

2

わかりました。マップを実行するには、XML 逆アセンブラーを使用する必要があります。メッセージが消去された理由は、理由はわかりませんが、スキーマを「elementFormDefault = Qualified」に設定すると機能しました。修飾されたメッセージ全体をよく理解していないので、それが何をしたのかよくわかりませんが、それが私にとっての問題でした。

于 2012-09-07T16:01:42.197 に答える
1

Visual Studio には、ストアド プロシージャとの通信に使用するスキーマとバインドを作成するのに役立つウィザードがあります。使わなかったのかな。(プロジェクトを右クリックし、[追加]、[生成されたアイテムの追加]、[アダプター サービスの消費] の順にクリックします)

双方向の送受信ポートにフックされたオーケストレーションからストアド プロシージャを呼び出しています。パイプライン用の XMLTransmit と XMLReceive でカスタム WCF タイプ ポートを使用しています。これはうまくいくようです。非常に多くのオプションがあるため、WCFを機能させるのは常に少し面倒です。

于 2012-09-07T15:41:53.900 に答える
0

ポートであるフォーマットから別のフォーマットにマップするには、MessageType をプロモートする必要があります。あなたの場合、受信パイプラインで XMLReceive を使用することで実現できます。

于 2013-02-01T14:37:58.340 に答える