如何在调用DateTime.ParseExact时确定WCF使用的DateTime格式?

时间:2012-03-12 06:53:36

标签: wcf datetime serialization

我的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反序列化。

1 个答案:

答案 0 :(得分:0)

原来确切的格式并不重要。问题是wsdl(特别是xsd)指定该值是xsd:date。但由于该值具有 time 作为字符串的一部分,因此反序列化器抛出异常。

所以问题在于数据不正确。我要求更换XSD。