2009-08-06 41 views
0

來自我的WCF服務的FaultContract沒有datacontract成員;因此當服務在BizTalk中消耗時,生成的模式不會顯示任何成員。我如何在BizTalk中處理?BizTalk中的FaultException處理

從.NET客戶端使用此WCF服務時,實現提供異常以及類庫(數據對象),並捕獲該異常類型的錯誤。

回答

0

我不確定這是否可能。但爲了讓它工作,biztalk必須能夠訪問你的數據對象的dll。你可以嘗試從你的biztalk項目中引用dll。

+0

我可以讓BizTalk引用該程序集。請你指導我進一步實現......比如如何將錯誤異常(端口)綁定到該異常類型/模式? – Muralidhar 2009-08-06 18:04:28

0

如果從業務流程消耗的服務,您可以嘗試以下步驟:

  1. 添加XSD表示您 FaultContract到項目並使用 以此爲消息類型上你的錯 操作。

  2. 使用此故障 操作消息類型

  3. 在您的雙向WCF發送端口去 郵件選項卡,然後在 「入境BizTalk消息正文」添加一個異常處理程序塊 編排 將單選按鈕更改爲路徑。

  4. 在 '身體路徑表達式' 添加 是這樣的:

    /* [命名空間URI()= 'http://myservice.namespace/'] |/* [本地名稱()= '故障']/* [本地名稱()= '詳情']/*

這些兩個XPath由分開的 '|'將使適配器根據接收到的內容發佈正確的服務應答或WCF FaultContract所在的詳細信息節點的內容。這將允許反彙編程序在嘗試識別消息時工作。

這樣做的一個副作用是在編排中遇到SOAP錯誤時會遇到問題,但這可以通過創建SOAP錯誤(http://schemas.datacontract.org/2004/07/System.ServiceModel#ExceptionDetail)的模式表示並將其用作第二個錯誤操作來解決。

0

我發現了問題。我們的Web服務以小寫形式返回錯誤XML。所以正確的XPath是

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

這實際上是SOAP 1.1和SOAP 1.2之間的區別 – 2013-11-08 13:59:21

相關問題