【问题标题】:How to access SOAP 1.1 fault detail from WCF client (no fault contract)如何从 WCF 客户端访问 SOAP 1.1 故障详细信息(无故障合同)
【发布时间】:2010-01-25 18:41:31
【问题描述】:

我正在访问一个 SOAP 1.1 Web 服务,它返回一个错误。据我所知,Web 服务没有在 WSDL 中定义任何故障契约。我的 WCF 客户端将故障映射到 FaultException(而不是 FaultException)。这一切都说得通。问题是该服务在故障的详细信息元素中返回了一些有用的诊断信息,我想访问这些信息,以便将其转储到跟踪日志中。似乎 FaultException 不提供对 detail 元素的任何访问,大概是因为没有故障契约它不知道里面有什么。

但我不需要反序列化详细 XML - 只需将原始 XML 作为字符串即可用于诊断目的。

在这种情况下,有什么方法可以从 WCF 客户端访问详细的 XML?

【问题讨论】:

    标签: wcf soap


    【解决方案1】:

    这里详述: 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();    
            ...    
        }    
    }
    

    【讨论】:

    • 正是我想要的。谢谢!
    • 如果可能的话,我会给你+10。我只是记得它在某个地方,但即使在 MSDN API 转储中我也无法找到它。非常感谢!
    • 太棒了,谢谢!然后,您可以通过执行以下操作迭代数据: while (reader.Read()) { } 并通过 reader.Name 和 reader.Value 访问循环内的数据
    猜你喜欢
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-20
    相关资源
    最近更新 更多