如何在Dynamics AX中获取SOAP故障的详细信息?

时间:2010-01-29 20:51:19

标签: wcf soap x++ dynamics-ax-2009 aif

我正在使用服务引用和生成的.NET类与AX中的外部SOAP服务进行通信。除了如何处理SOAP错误之外,一切都很顺利。理想情况下,这不会发生,但有时SOAP服务器(我也控制它)会抛出带有“代码”和“消息”的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中输入'System.ServiceModel.Channels.ReceivedFault',Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089 '未标记为可序列化。“

我已尝试深入挖掘基类.NET类,但ServiceModel(以及随后)用于将SOAP错误(类梯形图中的FaultException)转换为人类可读消息的其他类被模糊。

有人能借给我一些关于如何最好地获取实际故障代码/消息的见解吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用wcf跟踪http://msdn.microsoft.com/en-us/library/ms733025.aspx

或者您可以使用像fiddler这样的网络嗅探器来检查响应。