我需要使用具有日期和时间类型元素的 Java Webservice。
来自 wsdl 的示例:
...
<xsd:element name="fromTime" nillable="true" type="xsd:time" />
<xsd:element name="dateOfInspection" type="xsd:date" />
...
通过添加服务参考使用 Web 服务时,Visual Studio 2008 会生成以下代码:
[System.Xml.Serialization.SoapElementAttribute(DataType="time", IsNullable=true)]
public System.Nullable<System.DateTime> fromTime { ... }
[System.Xml.Serialization.SoapElementAttribute(DataType="date")]
public System.DateTime dateOfInspection { ... }
发送消息会导致带有 innerException 的反射错误:
“时间”是 SoapElementAttribute.DataType 属性的无效值。只能为原始类型指定该属性。
删除 DataType="time" 和 DataType="date" 属性时,一切似乎都正常。但是修改生成的代码是一种反模式。那么还有其他方法可以让这个工作吗?
更新:
仅当日期或时间元素可以为空时,才存在问题!
我在 Microsoft 的连接站点上报告了一个错误。如果你有同样的问题,你可以在这里投票: https ://connect.microsoft.com/VisualStudio/feedback/details/534453/sumption-java-webservice-with-nullable-date-and-time-elements-in -wcf-generates-invalid-datatype-attributes
更新 2:
微软确认这是一个错误,不太可能修复。
更新 3:
我用VS2010检查过,它仍然会生成错误的代码。顺便说一句,我们最终修改了生成的代码......