【问题标题】:How can I access the raw xml text of the request to my service?如何访问对我的服务的请求的原始 xml 文本?
【发布时间】:2013-01-29 02:11:20
【问题描述】:

我有一堆很棒的工作代码,可以访问各种 REST(有时是 SOAP)api。都是基于 .NET 4.0 的 WCF。

但有时我访问的系统会返回错误的 xml(啊哈,用字符串构建 xml 的开发人员......坏人!)。

所以 XML 是错误的,WCF 抛出(应该如此)... system.invalidoperationexception ... xml 文档中的错误 ... [字符串 FOO 不是有效的布尔值] [或其他一些解析错误]...

我需要记录 HTTP POST/GET 响应(反序列化失败的响应)的完整原始 xml。出于某种原因,我似乎无法弄清楚在 WCF 的什么地方可以找到它。

【问题讨论】:

  • 不是真正的重复,因为对于这种情况,消息检查器(在该帖子的答案中列出)将无济于事。

标签: .net wcf


【解决方案1】:

如果您需要访问请求的原始数据,您可以使用自定义消息编码器。您可以做的是创建自己的编码器(可能包装现有的编码器),然后您将获得来自传输层的原始字节。您可以在http://blogs.msdn.com/b/carlosfigueira/archive/2011/11/09/wcf-extensibility-message-encoders.aspx 找到有关自定义编码器的更多信息。

【讨论】:

    【解决方案2】:

    启用跟踪并查看问题出在哪里。有一个不错的应用 AppFabric,您可以在其中轻松更改您的 tacing 设置并查看异常消息。见http://msdn.microsoft.com/en-us/library/ms751526.aspx

    【讨论】:

    • 这并不是我们真正想要的。上述方法将导致所有内容都被记录。我们只想有条件地记录——当某些异常发生时。
    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 2019-02-20
    • 1970-01-01
    • 2015-10-19
    • 2018-11-27
    • 1970-01-01
    • 2010-11-06
    • 2015-11-20
    相关资源
    最近更新 更多