【问题标题】:How do I get the details of a SOAP fault in Dynamics AX?如何在 Dynamics AX 中获取 SOAP 错误的详细信息?
【发布时间】:2010-01-29 20:51:18
【问题描述】:

我目前正在使用服务引用和生成的 .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, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 中键入 'System.ServiceModel.Channels.ReceivedFault' ' 未标记为可序列化。”

我已经尝试深入研究基本的 .NET 类,但是用于将 SOAP 错误(类阶梯下的 FaultException)转换为人类可读消息的 ServiceModel(以及随后的)其他类被遮盖了。

谁能给我一些关于如何最好地了解实际故障代码/消息的见解?谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 2012-12-26
      • 1970-01-01
      相关资源
      最近更新 更多