2010-01-29 136 views
1

我目前正在使用服務引用和生成的.NET類與AX內的外部SOAP服務進行通信。除了如何處理SOAP錯誤之外,所有的工作都非常成功。理想情況下,這不會發生,但有時SOAP服務器(我也控制它)會拋出帶有「代碼」和「消息」的SOAP錯誤。代碼及其相應消息的一些示例:如何獲取Dynamics AX中的SOAP錯誤的詳細信息?

  • 「INVALID_API_KEY」/「使用了無效的API密鑰。」
  • 「INVALID_CUSTOMER_ID」/「無效的客戶ID已通過(%d)」。

這些錯誤代碼是在WSDL中定義的,所以當這些錯誤被拋出時,我可以自然地將一些消毒過的消息傳回給用戶。不幸的是,我遇到了一個問題,通過X ++進行深入研究,發現,其中 SOAP錯誤已被拋出,因此我可以顯示回到我的用戶的故障消毒解釋。目前我的代碼看起來像:

try 
{ 
    new InteropPermission(InteropKind::ClrInterop).assert(); 

    // ... code making SOAP calls 

    CodeAccessPermission::revertAssert(); 
} 
catch(Exception::CLRError) 
{ 
    warning(AifUtil::getClrErrorMessage()); 
} 

此處理SOAP錯誤不夠好,它產生的錯誤是:在裝配「類型」System.ServiceModel.Channels.ReceivedFault「System.ServiceModel,版本= 3.0 .0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'未標記爲可序列化。「

我已經嘗試鑽取基本的.NET類,但ServiceModel(以及後續)用於將SOAP錯誤(FaultException向下級梯級)轉換爲人類可讀消息的其他類都被遮蓋。

任何人都可以借我一些見解如何最好地得到實際的錯誤代碼/消息嗎?謝謝!

回答

相關問題