我的WCF服务无法反序列化XML响应。我收到一条错误,指出“String未被识别为有效的DateTime。”
我在堆栈跟踪中看到代码失败
System.DateTime.ParseExact(String s, String[] formats, IFormatProvider provider, DateTimeStyles style) +6364410
System.Xml.Serialization.XmlCustomFormatter.ToDate(String value) +58
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderINgiReportingMgmnt.Read50_TransactionItem_Type(Boolean isNullable, Boolean checkType) +629
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderINgiReportingMgmnt.Read105_transactionDetailRs() +1261
Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer54.Deserialize(XmlSerializationReader reader) +43
System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) +579
如何确定WCF使用的日期时间格式?我该如何更改格式?我无法控制我获取日期的格式。
PS:XML中的日期是“2010-01-03T11:59:59”。这使用正常的DateTime.Parse反序列化。
答案 0 :(得分:0)
原来确切的格式并不重要。问题是wsdl(特别是xsd)指定该值是xsd:date。但由于该值具有 time 作为字符串的一部分,因此反序列化器抛出异常。
所以问题在于数据不正确。我要求更换XSD。