2012-04-17 20 views
1

我有一個應用程序正在對另一個應用程序進行SOAP Web服務調用(這裏沒有JSON可能性)。一些回覆很好。問題在於其中一個呼叫正常,但響應帶來了System.DateTime.ParseExact錯誤。我查了一下日期格式SOAPUI和它回來爲:2012-02-05-05:00Monotouch iOS中的SOAP響應中的System.DateTime.ParseExact錯誤

的錯誤信息是:

在System.DateTime.ParseExact(System.String S,System.String []格式的IFormatProvider提供商,DateTimeStyles樣式)中的[0x0005c] /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/DateTime.cs:1761 at System.DateTime.ParseExact(System.String s,System.String format,IFormatProvider provider ,DateTimeStyles樣式)在/Developer/MonoTouch/Source/mono/mcs/class/corlib/System/DateTime.cs:1741 System.DateTime.ParseExact(System.String s,System.String格式,IFormatProvider提供程序中的[0x0001c] )[0x00000] in /在System.Xml.Serialization.XmlCustomFormatter.FromXmlString(System.Xml.Serialization.TypeData類型,System.String值)[0x001d4]上開發人員/ MonoTouch/Source/mono/mcs/class/corlib/System/DateTime.cs:927 在/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlCustomFormatter.cs:275 at System.Xml.Serialization.XmlSerializationReaderInterpreter.GetValueFromXmlString(System.String value,System.Xml。 Serialization.TypeData typeData,System.Xml.Serialization.XmlTypeMapping類型映射)中的[0x00047]位於System的/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:652 中。 Xml.Serialization.XmlSerializationReaderInterpreter.ReadPrimitiveValue(System.Xml.Serialization.XmlTypeMapElementInfo elem)/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpr中的[0x0003e] eter.cs:638 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObjectElement(System.Xml.Serialization.XmlTypeMapElementInfo elem)/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml中的[0x0003f]在/ Developer/MonoTouch/Source中的System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers(System.Xml.Serialization.ClassMap map,System.Object ob,Boolean isValueList,Boolean readBySoapOrder)[0x0082c]中的.Serialization/XmlSerializationReaderInterpreter.cs:614 /mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:464 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers(System.Xml.Serialization.XmlTypeMapping typeMap,System.Object ob)[0x00000 ] in /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:240 位於/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System中的System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance(System.Xml.Serialization.XmlTypeMapping typeMap,布爾isNullable,布爾checkType)[0x000d5]。 Xml.Serialization/XmlSerializationReaderInterpreter.cs:230 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject(System.Xml.Serialization.XmlTypeMapping typeMap,Boolean isNullable,Boolean checkType)在/ Developer/MonoTouch/Source/mono/mcs中爲[0x00031] /class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:193 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance(System.Xml.Serialization.XmlTypeMapping typeMap,Boolean isNullable,Boolean checkType)[0x00076] in/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:220 位於/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System中的System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject(System.Xml.Serialization.XmlTypeMapping typeMap,Boolean isNullable,布爾checkType)中的[0x00031]。 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObjectElement中的System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:193 /System.Xml。Serialization/XmlSerializationReaderInterpreter.cs:620 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers(System.Xml.Serialization.ClassMap map,System.Object ob,Boolean isValueList,Boolean readBySoapOrder)/ Developer/MonoTouch/Source中的[0x005fb]在System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstanceMembers(System.Xml.Serialization.XmlTypeMapping類型映射,System.Object ob)中設置單聲道/ mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:434 [0x00000]在/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:240 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance(System.Xml.Serialization.XmlTypeMapping typeMap,布爾isNullable,布爾checkType)/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml中的[0x000d5]。 Serialization/XmlSerializationReaderInterpreter.cs:230 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObject(System.Xml.Serialization.XmlTypeMapping typeMap,Boolean isNullable,Boolean checkType)/ Developer/MonoTouch/Source/mono/mcs/class中的[0x00031] /System/XmlSerializationReaderInterpreter.cs:193 at/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:620 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers(System.Xml.Serialization.ClassMap map,System.Object ob,Boolean isValueList,Boolean readBySoapOrder )/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializati中的[0x005fb] onReaderInterpreter.cs:434 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMessage(System.Xml.Serialization.XmlMembersMapping typeMap)/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml中的[0x0015a] .Serialization/XmlSerializationReaderInterpreter.cs:位於/Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter中System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot()[0x0004c]處的154 。 cs:92 at /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization中的System.Xml.Serialization.XmlSerializer.Deserialize(System.Xml.Serialization.XmlSerializationReader reader)[0x0001c] /XmlSerializer.cs:361

回答

0

This看起來並不像一個問題(見注)但是,如果我錯了,這裏爲什麼...

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

XmlCustomFormatter.cs(來源GitHub上可用)的路線#275,顯示格式(右或錯誤)Mono預計日期。

這與您在問題中提供的2012-02-05-05:00字符串不匹配,這會導致您現在遇到的異常。這可能是Mono中的一個錯誤,或者如果Microsoft實現的行爲相同,則說明您正在調用的Web服務存在問題。

注: bug報告在http://bugzilla.xamarin.com

+0

感謝您的回覆。我有一個ASP.NET版本的應用程序,我沒有這個問題。完全相同的代碼和Web服務。這似乎是一個單聲道錯誤。 – EICSB 2012-04-17 21:34:33

+0

你能想到一種方法,我可以在我的C#代碼覆蓋這個? – EICSB 2012-04-17 21:41:44

0

充滿我已經看到了這之前一對夫婦幾年前,它已經停止了我幾個移植的Web服務項目單。我可以確認Mono的行爲與Microsoft .Net不同。我不清楚它是否是一個錯誤,但許多Web服務以'yyyy-mm-dd'以外的格式返回日期,有些添加'Z'或其他時區規格,有些有時間。您可以修補Mono以使用System.DateTime.Parse,但是爲此只能使用自定義Mono構建。