如何在協調流程中處理類型錯誤的合約
本主題描述如何在使用 WCF 服務時,從協調流程內處理類型錯誤的合約。 若要處理協調流程中的具型別錯誤例外狀況,您所取用的 WCF 服務必須套用FaultContractAttribute至服務作業;因此,您可以使用FaultException< T > 擲回錯誤,其中 T 可以是 WCF 服務中的任何有效資料合約或可序列化類型。
程序
若要在協調流程中處理類型錯誤的合約
在您的 Microsoft Visual Studio BizTalk 專案中,于 [方案總管] 中,以滑鼠右鍵按一下您的專案,按一下 [新增],然後按一下 [新增產生的專案]。
在 [新增產生的專案 - <專案名稱> ] 對話方塊的 [範本] 區段中,選取 [取用 WCF 服務],然後按一下 [新增]。
在 [ 歡迎使用 BizTalk WCF 服務取用精靈 ] 頁面上,按 [ 下一步]。
在 [ 中繼資料來源 ] 頁面上,選取 [ 中繼資料 Exchange (MEX) 端點],然後按 [ 下一步]。
在 [ 中繼資料端點 ] 頁面上,指定執行中服務的 URL,以提供透過 WS-Metadata Exchange 或 Http-Get 下載的中繼資料,例如, http://localhost:8005. 若要從 URL 取得元資料檔案,請按一下 [ 取得]。 如果執行中的服務需要具有基本驗證配置的使用者認證,請按一下 [編輯 ] 以開啟 [BizTalk WCF 服務 取用精靈] 對話方塊,您可以在其中提供存取執行中服務時要使用的使用者名稱和密碼。 按一下 [下一步]。
在 [ 匯入 WCF 服務中繼資料摘要 ] 頁面上,檢閱您的設定。 您可以按一下 [上一步 ] 進行任何變更。 然後按一下 [ 匯 入] 以建立要用於取用 WCF 服務的 BizTalk 成品和類型。
在 [ 正在完成 BizTalk WCF 服務取用精靈 ] 頁面上,按一下 [ 完成]。
假設您使用的 WCF 服務擲回下列錯誤例外狀況:
throw new FaultException<MyOperationException>(divideException);
傳送埠上的錯誤作業需要 MyOperationException類型的訊息,但 WCF 回應訊息包含整個錯誤本文。 因此,您必須在傳輸屬性對話方塊中設定 [輸入 BizTalk 訊息本文] 選項,以從訊息擷取MyOperationException部分。 例如
選取 [路徑] -- 依本文路徑找到的內容。
將內文路徑運算式設定如下:
/*[local-name()='Fault']/*[local-name()='Detail']/* | /*[local-name()='DivideResponse']
從[節點編碼] 下拉式清單中選取[Xml]。
在協調流程中,您必須新增範圍和兩個例外狀況處理常式。 其中一個例外狀況處理常式適用于 Fault 作業,類似于上述範例所示的 MyOperationException ;另一個例外狀況處理常式是用於攔截泛型 SOAPExceptions。
另請參閱
如何從發佈為 WCF 服務的協調流程擲回錯誤例外狀況
如何使用 BizTalk WCF 服務使用精靈以使用 WCF 服務