使用webservice中的空日期解析错误

时间:2015-06-02 14:44:41

标签: c# web-services

我收到来自包含<EndDate/>的网络服务的回复。该字段在WSDL中具有minOccurs="0"

<xsd:element name="EndDate" type="p8:Date" minOccurs="0">

当我查看Fiddler时,我看到数据到达,但VS在解析错误时崩溃:

  

字符串无法识别为有效的DateTime

。 这是因为空<EndDate/>?它不是强制性的,但如果它存在,它需要有一个正确的值,或者至少这是我的想法。 正确?有没有办法避免这个错误? web服务在我的解决方案中作为Web引用添加。

导入Web服务时,VS生成的reference.cs文件中会抛出该错误。

1 个答案:

答案 0 :(得分:0)

是的,你的假设是正确的。

<location allowOverride="false">表示元素可以完全省略。因此,以下两个选项是正确的:

minOccurs="0"

意味着 <{1}}的空字符串成为有效条目。因此,以下是正确:

<SomeType>
   <StartDate>2015-01-01</StartDate>
</SomeType>

<SomeType>
   <StartDate>2015-01-01</StartDate>
   <EndDate>2015-01-02</EndDate>
</SomeType>

测试用例:http://www.utilities-online.info/xsdvalidation/?save=0c001ac9-de37-49a3-a676-f857300c3dfa-xsdvalidation

在这种情况下,正确的解决方案是通知您的Web服务提供商他们的响应与其xsd架构不匹配。