【发布时间】:2014-06-02 08:55:10
【问题描述】:
使用 Visual Studio 2010,我正在调用 SOAP Web 服务并不断收到错误消息“反序列化回复消息正文时出错”。
我这样调用 WS 方法:
wsConfig.config_pttClient client = new wsConfig.config_pttClient();
wsConfig.getConfigInput gci = new wsConfig.getConfigInput();
wsConfig.getConfigOutput gco = new wsConfig.getConfigOutput();
gco = client.getConfig(gci); // the exception is thrown here
该方法不需要输入数据:我使用 SoapUI 对其进行了测试,它工作正常。使用 fiddler,我看到了调用,并且所有数据的答案都是正确的。
研究了一段时间后,我尝试在xsd 中更改readerQuotas 之类的maxStringContentLength、maxDepth 等,但没有成功。
我为getConfig 方法找到了一些解决方法:当我更改Reference.cs 文件并将System.DateTime 变量类型更改为string 时,它可以正常工作,但是我需要调用setConfig方法,并且更改会带来another problem...另外,我已经读过更改Web服务合同不是一个好习惯。
我一直在寻找解决方案,这里有一些我检查过的地方:this、this、this 或 this。
有人可以帮忙吗? 谢谢
【问题讨论】:
-
网络上发生了什么(WCF tracing)?
-
@RowlandShaw,我很确定这与日期类型有关 - 这是我的跟踪文件的第一行:
em System.Xml.Serialization.XmlSerializationReader.ToDateTime(String value) -
那么到底发生了什么?
-
对不起,什么意思?
-
使用 WCF 跟踪时,您可以注销“通过网络”发送和接收的消息 - 这允许您查看远程 Web 服务是否通过在格式错误、返回错误消息、返回未正确转义为 XML 的内容等 - 这将有助于理解 为什么 它无法反序列化回复。
标签: c# xml web-services soap xsd