簡體   English   中英

BizTalk 2006 R2如何使用PreserveObjectReferences = true消耗WCF服務的序列化響應?

[英]How can BizTalk 2006 R2 consume the serialized response of a WCF service with PreserveObjectReferences = true?

我們有一個現有的.net 3.5 WCF服務,該服務在服務器端將PreserveObjectReferences設置為true。

當PreserveObjectReferences設置為false時,BizTalk可以使用響應。

有沒有辦法讓BizTalk消耗PreserveObjectReferences響應有效負載...

PreserveObjectReferences自身以在對象的第一個實例中出現的az:id和在隨后出現的任何對象中出現的az:ref來表示:

<b:xyz *z:Id="5"* i:type="abc">...</b:xyz>
...
<b:xyz *z:ref="5"* />

生成xsd時,將PreserveObjectReferences選項配置為什么?

xsd是從WCF服務的WSDL中生成的,如果在此WSDL中未定義這些額外的屬性,BizTalk將不知道它們的存在,並且BizTalk將引發異常。 我不確定在生成WSDL時DataContractSerializer是否包含這些屬性。 如果在生成WSDL時DataContractSerializer不包含這些屬性,則必須更改響應消息的xsd以允許在添加了這些屬性的元素上使用xs:any屬性。

由於不同的原因,BizTalk和JAX-B都在處理有效負載方面存在問題。 ID / IDREF是受支持的XML Schema選項,但是每個實現似乎在使用它們時都會遇到問題。

對於JAX-B,當同時指定了idref和nil = true時,它無法將有效載荷編組為對象:

<b:xyz z:ref="5" nil="true"  />

刪除nil = true或將保留的對象引用設置為false(即,不使用idref功能返回有效載荷意味着Java編碼人員可以解決此問題。

BizTalk可以解決此問題,方法是通過xslt轉換或其他方式重新補充不帶idref支持的xml。

我們對兩者的解決方案都是確保保留對象引用已關閉。 這樣,兩個系統都可以輕松集成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM