2009-08-06 15 views
0

私のWCFサービスからのFaultContractには、datacontractメンバーがありません。したがって、BizTalkでサービスが使用されると、生成されたスキーマにはメンバーが表示されません。 BizTalkでの処理方法BizTalkでのFaultExceptionの処理

.NETクライアントからこのWCFサービスを使用している間、実装は(データオブジェクトの)クラスライブラリと共に例外を提供し、その例外タイプの障害をキャッチします。

答えて

0

これが可能かどうかわかりません。しかし、ビッツトークを動作させるには、データオブジェクトを持つdllにアクセスできる必要があります。あなたは、あなたのbiztalkプロジェクトからdllを参照しようとすることができます。

+0

です。そのアセンブリを参照することができます。あなたは私の実装の詳細を教えてください...どのように例外タイプ/スキーマにフォールト例外(ポート)をバインドするのですか? – Muralidhar

0

あなたがオーケストレーションからサービスを消費している場合は、次の手順を試みることができる:

  1. プロジェクトにあなたの FaultContractのXSD表現を追加して、あなたのせい 操作上のメッセージの種類として これを使用します。

  2. は、WCF SendPortは 「受信のBizTalkメッセージ本文」に続い へのメッセージ]タブに行くと自分の双方向のメッセージタイプ

  3. として 操作この障害を使用して にオーケストレーションを例外ハンドラブロックを追加します。 ラジオボタンを[パス]に変更します。 'ボディ・パス式' このような 何かを追加で

  4. /* [名前空間URI-()= 'http://myservice.namespace/'] |/* [ローカル名()= '障害']/* [ローカル名()= '詳細']/*

によって分離されたこれらの二つのXPath '|'受信した内容に応じてアダプターを作成し、正しいサービス応答またはWCF FaultContractが配置されている詳細ノードの内容を公開します。これにより、ディスアセンブラはメッセージを識別しようとするときに機能します。

オーケストレーションでSOAPフォールトを捕まえるのに問題がありますが、これはSOAPフォールト(http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail)のスキーマ表現を作成し、それを第2のフォールト操作として使用することで解決します。

0

問題が見つかりました。私たちのWebサービスは、小文字でXMLを返します。正しいXPathは

/*[local-name()='Fault']/*[local-name()='detail']/* 
+0

これは実際にはSOAP 1.1とSOAP 1.2の違いです –

関連する問題