2009-07-09 54 views
3

有谁知道我可以如何解决Web服务响应? 当我从Web服务调用中获取我的soap消息时,只要它是每个示例的日期时间值类型,就会收到此错误“字符串”不是有效的AllXsd值“。消费SOAP Web服务,对值类型进行反序列化时出错

我的代理类是从wsdl使用wsdl.exe生成的,wsdl似乎有效。 我没有看到任何错误的代理类(指定的值生成,日期时间是可空的)。

我已经尝试netmon来看看电线上的肥皂信封,但一切似乎正常。

你能想出其他方法来解决这个问题吗?或者可能是关于这里发生的事情的线索?

+0

请发布完整的例外。捕获异常并发布ex.ToString()的结果。 – 2009-07-22 03:25:52

回答

1

好吧,我发现问题是什么。

有2种方式的一个元素为空的SOAP:

要么缺少 或者用参数XSI整个元素:无=“true”和没有价值

他们通过固定它用第一个选项修改他们的消息。 从那时起,我可以反序列化,没有问题。

谢谢你的回答。

1

您有任何关于Web服务的文档吗?您在使用日期时间时报告出现此问题,请验证日期格式是否正确date.ToString("yyyy-MM-dd");或您的服务期望值。

1

尝试Web Service Studio并使用该工具点击您的Web服务以查看它是否与您的客户端有相同的问题。你可能会收集一些线索。 Web服务是你的代码吗?如果是,你使用asmx还是WCF?你使用的是DataContract序列化程序还是XmlSerializer?你有没有尝试重新生成你的客户端代理?

0

因为这个xsi:nil="true"的事情,我的SOAP请求正在返回BadRequest。
什么固定它是把它添加到SOAP信封上:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

例如:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://www.blahblahblah.com/myobjectdefinition" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

我不知道为什么了SoapUI没有产生该位,但不管怎么说它为我修好了。