BizTalk フラット ファイルのメッセージ ルーティングの失敗
-
03-10-2019 - |
質問
Web 上で、XLANGMessage タイプを使用したオーケストレーションで受信シェイプを使用して、特定の xsd にアセンブルできないフラット ファイル スキーマ ファイルを受信できると主張する壊れたスレッドをいくつか見つけました。
受信シェイプのメッセージ タイプを Microsoft.XLANGS.BaseTypes.XLANGMessage として設定しようとしましたが、このベースタイプはシリアル化できません。これによりビルド エラーが発生します。
整形式の XML メッセージの XmlDocument と、不正な形式の XML および組み立てられていないフラット ファイルの両方をキャプチャできるオブジェクト タイプはありますか?
解決
太字で直接の質問に答えると、はい、あなたが求めているタイプは次のとおりです。 System.Xml.XmlDocument
.
新しいメッセージを作成し、そのタイプを選択するときに、「.NET クラス」セクションから上記のタイプを選択する必要があります。
このメッセージを受信シェイプに割り当てると、任意のペイロードを受信できます。たとえば、解析する必要がない .pdf ファイルなどの形式を BizTalk 経由で渡すためにこれをよく使用しました。ただし、名前とは裏腹に、ここにあるものは XML ではなく、Xml として扱おうとするとあらゆる種類の問題が発生することに注意してください。
あなたの質問をもう少し掘り下げると、何らかのエラー処理オーケストレーションを作成しようとしていますか?
エラー処理コードにいる場合は、次のタイプのメッセージを受信する受信シェイプを作成するだけです。 XmlDocument
フィルター式は ErrorReport.ErrorType == "FailedMessage" に設定され、メッセージ ボックスに接続された直接バインドされたポートにバインドされます。
2 つの受信形状があると便利だとよく思います。1 つは、考えられるペイロードがある場合にルーティングの失敗をキャッチするためのもので、もう 1 つは、定義して CatchException から他のオーケストレーションに渡す、厳密に型指定されたフォールト ラッパー エンベロープをサブスクライブするためのものです。形。
これは、すべての例外を処理するための 1 つの集中管理された場所を構築できることを意味します。
見ていない場合は、素晴らしいものがあります チャールズ・ヤングによる投稿 あなたがやろうとしていることと同じようなことを説明しているかもしれません。