如何获取Dynamics AX中的SOAP错误的详细信息?
问题描述:
我目前正在使用服务引用和生成的.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向下级梯级)转换为人类可读消息的其他类都被遮盖。
任何人都可以借我一些见解如何最好地得到实际的错误代码/消息吗?谢谢!