私のWCFサービスからのFaultContractには、datacontractメンバーがありません。したがって、BizTalkでサービスが使用されると、生成されたスキーマにはメンバーが表示されません。 BizTalkでの処理方法BizTalkでのFaultExceptionの処理
.NETクライアントからこのWCFサービスを使用している間、実装は(データオブジェクトの)クラスライブラリと共に例外を提供し、その例外タイプの障害をキャッチします。
私のWCFサービスからのFaultContractには、datacontractメンバーがありません。したがって、BizTalkでサービスが使用されると、生成されたスキーマにはメンバーが表示されません。 BizTalkでの処理方法BizTalkでのFaultExceptionの処理
.NETクライアントからこのWCFサービスを使用している間、実装は(データオブジェクトの)クラスライブラリと共に例外を提供し、その例外タイプの障害をキャッチします。
これが可能かどうかわかりません。しかし、ビッツトークを動作させるには、データオブジェクトを持つdllにアクセスできる必要があります。あなたは、あなたのbiztalkプロジェクトからdllを参照しようとすることができます。
あなたがオーケストレーションからサービスを消費している場合は、次の手順を試みることができる:
プロジェクトにあなたの FaultContractのXSD表現を追加して、あなたのせい 操作上のメッセージの種類として これを使用します。
は、WCF SendPortは 「受信のBizTalkメッセージ本文」に続い へのメッセージ]タブに行くと自分の双方向のメッセージタイプ
として 操作この障害を使用して にオーケストレーションを例外ハンドラブロックを追加します。 ラジオボタンを[パス]に変更します。 'ボディ・パス式' このような 何かを追加で
:
/* [名前空間URI-()= 'http://myservice.namespace/'] |/* [ローカル名()= '障害']/* [ローカル名()= '詳細']/*
によって分離されたこれらの二つのXPath '|'受信した内容に応じてアダプターを作成し、正しいサービス応答またはWCF FaultContractが配置されている詳細ノードの内容を公開します。これにより、ディスアセンブラはメッセージを識別しようとするときに機能します。
オーケストレーションでSOAPフォールトを捕まえるのに問題がありますが、これはSOAPフォールト(http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail)のスキーマ表現を作成し、それを第2のフォールト操作として使用することで解決します。
問題が見つかりました。私たちのWebサービスは、小文字でXMLを返します。正しいXPathは
/*[local-name()='Fault']/*[local-name()='detail']/*
これは実際にはSOAP 1.1とSOAP 1.2の違いです –
です。そのアセンブリを参照することができます。あなたは私の実装の詳細を教えてください...どのように例外タイプ/スキーマにフォールト例外(ポート)をバインドするのですか? – Muralidhar