C# Webservices:反序列化回复消息正文时出错

C# Webservices:反序列化回复消息正文时出错,c#,xml,web-services,soap,xsd,C#,Xml,Web Services,Soap,Xsd,使用VisualStudio2010,我正在调用SOAP Web服务,并在反序列化回复消息体时不断收到错误 我这样调用WS方法: wsConfig.config_pttClient client = new wsConfig.config_pttClient(); wsConfig.getConfigInput gci = new wsConfig.getConfigInput(); wsConfig.getConfigOutput gco = new wsConfig.

使用VisualStudio2010,我正在调用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中修改诸如maxStringContentLength、maxDepth等ReaderQuota,但没有成功

不过,我为getConfig方法找到了一些变通方法:当我更改Reference.cs文件并将System.DateTime变量类型更改为string时,它可以正常工作,但随后我需要调用setConfig方法,这种更改会带来。。。此外,我还读到修改Web服务合同不是一个好的做法

我已经寻找解决方案一段时间了,下面是我检查过的一些地方:,或者

有人能帮忙吗?
谢谢

看来我找到了解决问题的方法:

在服务引用下的reference.cs文件中,我将每个DateTime和System.Nullable对象都更改为字符串对象(正如我以前尝试过的那样),这样就可以使get方法生效

尝试调用set方法时,我使用以下命令传递日期:

vt.beginDate = DateTime.Now.ToString("o");

ToStringo似乎是防止序列化问题的有效解决方案。

这是怎么回事?@RowlandShaw,我很确定它与日期类型有关-这是我跟踪文件的第一行:em System.Xml.serialization.XmlSerializationReader.ToDateTimeString值那么这是怎么回事?对不起,您的意思是什么?使用WCF跟踪时,您可以在通过网络发送和接收消息时注销消息-这允许您查看远程web服务是否因以错误格式结束数据、返回错误消息、返回未正确转义为XML的内容而违反其约定,等等-这将有助于理解为什么它不能反序列化回复。嗯,这似乎不是一个好的解决方案,因为每次服务更新后都会再次生成reference.cs