來自我的WCF服務的FaultContract沒有datacontract成員;因此當服務在BizTalk中消耗時,生成的模式不會顯示任何成員。我如何在BizTalk中處理?BizTalk中的FaultException處理
從.NET客戶端使用此WCF服務時,實現提供異常以及類庫(數據對象),並捕獲該異常類型的錯誤。
來自我的WCF服務的FaultContract沒有datacontract成員;因此當服務在BizTalk中消耗時,生成的模式不會顯示任何成員。我如何在BizTalk中處理?BizTalk中的FaultException處理
從.NET客戶端使用此WCF服務時,實現提供異常以及類庫(數據對象),並捕獲該異常類型的錯誤。
我不確定這是否可能。但爲了讓它工作,biztalk必須能夠訪問你的數據對象的dll。你可以嘗試從你的biztalk項目中引用dll。
如果從業務流程消耗的服務,您可以嘗試以下步驟:
添加XSD表示您 FaultContract到項目並使用 以此爲消息類型上你的錯 操作。
使用此故障 操作消息類型
在您的雙向WCF發送端口去 郵件選項卡,然後在 「入境BizTalk消息正文」添加一個異常處理程序塊 編排 將單選按鈕更改爲路徑。
在 '身體路徑表達式' 添加 是這樣的:
/* [命名空間URI()= 'http://myservice.namespace/'] |/* [本地名稱()= '故障']/* [本地名稱()= '詳情']/*
這些兩個XPath由分開的 '|'將使適配器根據接收到的內容發佈正確的服務應答或WCF FaultContract所在的詳細信息節點的內容。這將允許反彙編程序在嘗試識別消息時工作。
這樣做的一個副作用是在編排中遇到SOAP錯誤時會遇到問題,但這可以通過創建SOAP錯誤(http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail)的模式表示並將其用作第二個錯誤操作來解決。
我發現了問題。我們的Web服務以小寫形式返回錯誤XML。所以正確的XPath是
/*[local-name()='Fault']/*[local-name()='detail']/*
這實際上是SOAP 1.1和SOAP 1.2之間的區別 – 2013-11-08 13:59:21
我可以讓BizTalk引用該程序集。請你指導我進一步實現......比如如何將錯誤異常(端口)綁定到該異常類型/模式? – Muralidhar 2009-08-06 18:04:28