我正在访问SOAP 1.1 Web服务,它正在返回错误。据我所知,Web服务没有在WSDL中定义任何错误契约。我的WCF客户端将故障映射到FaultException(而不是FaultException< T>)。这一切都有道理。问题是服务正在故障的detail元素中返回一些有用的诊断信息,我想访问它以便我可以将它转储到跟踪日志中。似乎FaultException没有提供对detail元素的任何访问,大概是因为没有错误契约它不知道那里有什么。
但我不需要反序列化详细信息XML - 只需将原始XML作为字符串就可以用于诊断目的。
在这种情况下,有没有办法从WCF客户端访问详细信息XML?
答案 0 :(得分:11)
详情如下: http://www.theruntime.com/blogs/jacob/archive/2008/01/28/getting-at-the-details.aspx
您可以使用此变通方法获取详细信息:
} catch (FaultException soapEx)
{
MessageFault mf = soapEx.CreateMessageFault();
if (mf.HasDetail)
{
XmlDictionaryReader reader = mf.GetReaderAtDetailContents();
...
}
}