1

以下は、サードパーティのWebサービスに電話をかけた後にサードパーティから受信した実際のメッセージです。

<TransferRequest>
<SecurityHeader>
<...Removed, but not bothered by this/>
</SecurityHeader>
<TransferReq xmlns="'http://www.removedforthepostonstackoverflow">
.....

私のBizTalkマップでは、指定されたセキュリティヘッダーのない情報が必要です(したがって、ルートとしてTransferReqを使用します)-ヘッダーを含むXSDを生成しようとしましたが、それはできません-デフォルトの名前空間がルートの下に名前が付けられているためです。

BizTalk InboundBodyPathExpressionを修正して、XPathを使用して、ルートノードとして使用する関連ノードを検索しました。Microsoftのドキュメントは次のとおりです。WCFアダプターのメッセージ本文の指定

これは私のxpathです:

/*[local-name()='TransferRequest']/*[local-name()='TransferReq' and namespace()='http://www.removedforthepostonstackoverflow']

上記はサードパーティから返されるものです

しかし、私はこれを取得しますが、スローされます:

エンドポイントハンドラ通信の例外。メッセージの処理中にエラーが発生しましたError説明:System.InvalidOperationException:インバウンドボディパス式 "/ [local-name()='TransferRequest'] / [local-name()='TransferReq' and namespace()=' http:/ /www.removedforthepostonstackoverflow ']"は無効です。

誰かが私が間違ったことを見ることができますか?

4

1 に答える 1

2

問題は明らかです:

XPath関数はありませんnamespace()。標準のXPath関数を使用する必要があります。

namespace-uri()

于 2012-11-15T23:54:38.347 に答える