我正在使用服务引用和生成的.NET类与AX中的外部SOAP服务进行通信。除了如何处理SOAP错误之外,一切都很顺利。理想情况下,这不会发生,但有时SOAP服务器(我也控制它)会抛出带有“代码”和“消息”的SOAP错误。代码的一些示例及其各自的消息:
这些错误代码在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)转换为人类可读消息的其他类被模糊。
有人能借给我一些关于如何最好地获取实际故障代码/消息的见解吗?谢谢!
答案 0 :(得分:0)
您可以使用wcf跟踪http://msdn.microsoft.com/en-us/library/ms733025.aspx
或者您可以使用像fiddler这样的网络嗅探器来检查响应。