【问题标题】:Error in deserializing body of request message for operation反序列化操作请求消息正文时出错
【发布时间】:2014-03-06 13:16:41
【问题描述】:

我正在编写一个服务适配器来使用由另一个供应商 (Pega) 托管的 Web 服务。更改此服务不是我的选择。 当我调用一个方法时,我得到了错误:

“反序列化操作请求消息正文时出错”

我尝试增加 maxStringContentLength 等等。没有任何效果。
在检查响应 XML 时,我看到几个 long 和 int 变量的空值,我相信这就是原因。

有什么解决办法吗?

【问题讨论】:

  • 它正在反序列化。请原谅自动更正。
  • 这个链接可能对你有帮助marcipsen.wordpress.com/2009/02/25/…
  • 感谢 Karthik,但我已经尝试在 app.config 中更改设置。正如我所提到的,我相信原因可能是响应 XML 中的几个 long 和 int 变量有空值。需要从客户端解决这个问题。
  • 内部异常是否有更多细节?
  • 唯一有意义的是:在 System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt) at System.Xml.XmlConvert.ToInt64(String s)

标签: c# web-services wcf


【解决方案1】:

从服务端删除空标签后,此问题得到解决。 .Net 客户端未找到解决方案。

【讨论】:

  • 我将服务端配置为发送 0 而不是 null 元素。
  • 谢谢。我用两件事解决了我的问题:1)将操作的返回类型从简单的字符串类型更改为使用 DataContractAttribute 修饰的自定义类类型。 2)我卸载了干扰 jQuery 调用的 HttpWatch 7.0.22。是 HttpWatch 阻止了操作参数的发送。
  • @PAVITRA - 我有同样的问题,无法按照你的指示解决:你是怎么做到的?什么空标签?来自哪个文件?
  • 在响应中,我有几个 long 和 int 不能为空的字段的空值。这通常不应该发生。当试图反序列化这个响应时,抛出了错误。无法从 .NET 端找到任何修复。所以我最后的选择是改变第三方服务。我将其更改为发送 0 而不是 long,int 字段的空标签。
【解决方案2】:

我通过更改请求参数之一的格式解决了这个问题。日期作为文本传递,服务无法解析提供的日期格式。

虽然不确定为什么将服务预期日期作为字符串,但当时超出了范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多