1

我有一个应用程序正在对另一个应用程序进行 SOAP Web 服务调用(这里没有 JSON 可能性)。一些回复很好。问题是其中一个调用正常,但响应返回System.DateTime.ParseExact错误。我检查了 SOAPUI 中的日期格式,它返回为:2012-02-05-05:00

错误信息是:

在 /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/DateTime.cs 中的 System.DateTime.ParseExact(System.String s,System.String[] 格式,IFormatProvider 提供程序,DateTimeStyles 样式)[0x0005c]: 1761 在 System.DateTime.ParseExact(System.String s,System.String 格式,IFormatProvider 提供程序,DateTimeStyles 样式)[0x0001c] 在 /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/DateTime.cs:1741在 System.DateTime.ParseExact(System.String s,System.String 格式,IFormatProvider 提供程序)[0x00000] 在 /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/DateTime.cs:927 在 System.Xml .Serialization.XmlCustomFormatter.FromXmlString(System.Xml.Serialization.TypeData 类型,System.String 值)[0x001d4] 在 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlCustomFormatter。 CS:275 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.GetValueFromXmlString(System.String 值,System.Xml.Serialization.TypeData typeData,System.Xml.Serialization.XmlTypeMapping typeMap)[0x00047] 在 /Developer/MonoTouch/Source/mono/mcs/类/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:652 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadPrimitiveValue (System.Xml.Serialization.XmlTypeMapElementInfo elem) [0x0003e] 在 /Developer/MonoTouch/Source/mono/ mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:638 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObjectElement (System.Xml.Serialization.XmlTypeMapElementInfo elem) [0x0003f] 在 /Developer/MonoTouch/Source/单声道/mcs/class/System.XML/System.Xml。序列化/XmlSerializationReaderInterpreter.cs:614 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap map, System.Object ob, Boolean isValueList, Boolean readBySoapOrder) [0x0082c] in /Developer/MonoTouch/Source/mono /mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:464 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob) [0x00000] 在 / Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:240 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable,Boolean checkType) [0x000d5] in /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:230 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject (System.Xml. Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x00031] in /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:193 at System.Xml.Serialization。 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs 中的 XmlSerializationReaderInterpreter.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x00076]: 220 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x00031] in /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:193 at System.Xml.Serialization。 XmlSerializationReaderInterpreter.ReadObjectElement (System.Xml.Serialization.XmlTypeMapElementInfo elem) [0x0005c] 在 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:620 在 System.Xml。 Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap map, System.Object ob, Boolean isValueList, Boolean readBySoapOrder) [0x005fb] 在 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml .Serialization/XmlSerializationReaderInterpreter.cs:434 在 System.Xml.Serialization。XmlSerializationReaderInterpreter.ReadClassInstanceMembers (System.Xml.Serialization.XmlTypeMapping typeMap, System.Object ob) [0x00000] 在 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:240在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x000d5] 在 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml .Serialization/XmlSerializationReaderInterpreter.cs:230 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x00031] 在 /Developer/MonoTouch/Source/mono/mcs/class /System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter。cs:193 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObjectElement (System.Xml.Serialization.XmlTypeMapElementInfo elem) [0x0005c] 在 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/ XmlSerializationReaderInterpreter.cs:620 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap map, System.Object ob, Boolean isValueList, Boolean readBySoapOrder) [0x005fb] in /Developer/MonoTouch/Source/mono/mcs /class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:434 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMessage (System.Xml.Serialization.XmlMembersMapping typeMap) [0x0015a] 在 /Developer/MonoTouch/Source/mono /mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:154 在 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot () [0x0004c] 在 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:92 在 System.Xml。 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializer.cs:361中的Serialization.XmlSerializer.Deserialize(System.Xml.Serialization.XmlSerializationReader阅读器)[0x0001c]序列化/XmlSerializer.cs:361序列化/XmlSerializer.cs:361

4

2 回答 2

0

这看起来不像一个问题(见注释),但是,如果我弄错了,这里为什么......

case "date": return DateTime.ParseExact (value, "yyyy-MM-dd", null);

这是XmlCustomFormatter.cs (github 上提供的源代码)中的第 275 行,它显示了 Mono 期望日期的格式(正确或错误)。

这与您在问题中提供的字符串不匹配2012-02-05-05:00,这会导致您现在遇到的异常。这可能是 Mono 中的错误,或者,如果 Microsoft 实现的行为相同,则可能是您正在调用的 Web 服务的问题。

注意:http://bugzilla.xamarin.com填写错误报告

于 2012-04-17T21:28:18.160 回答
0

几年前我已经看到了这个,它阻止了我将几个 Web 服务项目移植到 Mono。我可以确认 Mono 的行为与 Microsoft .Net 不同。我不清楚这是否是一个错误,但许多 Web 服务以“yyyy-mm-dd”以外的格式返回日期,有些添加了“Z”或其他时区规范,有些有时间。您可以修补 Mono 以使用 System.DateTime.Parse,但是为此必须使用自定义 Mono 构建会很痛苦。

于 2012-05-03T06:49:41.040 回答