1

別のアプリケーションに対して SOAP Web サービス呼び出しを行っているアプリケーションがあります (ここでは JSON の可能性はありません)。一部の応答は正常に返されます。問題は、呼び出しの 1 つが正常に行われるが、応答で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 at 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 /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlCustomFormatter. cs:275 at System.Xml.Serialization.XmlSerializationReaderInterpreter.GetValueFromXmlString (System.String 値、System.Xml.Serialization.TypeData typeData、System.Xml.Serialization.XmlTypeMapping typeMap) [0x00047] /Developer/MonoTouch/Source/mono/mcs/ class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:652 at 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 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadObjectElement (System.Xml.Serialization.XmlTypeMapElementInfo elem) [0x0003f] /Developer/MonoTouch/Source/ mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:614 at 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 at 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、ブール値は Nullable、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.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap, Boolean isNullable, Boolean checkType) [0x00076] /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs: 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. System.Xml の /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:620 の XmlSerializationReaderInterpreter.ReadObjectElement (System.Xml.Serialization.XmlTypeMapElementInfo elem) [0x0005c]。 Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap マップ、System.Object ob、Boolean isValueList、Boolean readBySoapOrder) [0x005fb] in /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml .Serialization/XmlSerializationReaderInterpreter.cs:System.Xml.Serialization の 434。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 System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadClassInstance (System.Xml.Serialization.XmlTypeMapping typeMap、ブール isNullable、ブール 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、ブール値 isNullable、ブール値 checkType) [0x00031] /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) /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/の [0x0005c] XmlSerializationReaderInterpreter.cs:620 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMembers (System.Xml.Serialization.ClassMap map、System.Object ob、Boolean isValueList、Boolean readBySoapOrder) [0x005fb] in /Developer/MonoTouch/Source/mono/mcs /Developer/MonoTouch/Source/mono の System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadMessage (System.Xml.Serialization.XmlMembersMapping typeMap) [0x0015a] の /class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:434 /mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:154 at System.Xml.Serialization.XmlSerializationReaderInterpreter.ReadRoot () [0x0004c] in /Developer/MonoTouch/Source/mono/mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs:92 at 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

これは数年前に見たことがありますが、いくつかのWebサービスプロジェクトをMonoに移植することができなくなりました。Monoの動作がMicrosoft.Netとは異なることを確認できます。バグかどうかはわかりませんが、多くのWebサービスは、「yyyy-mm-dd」以外の形式で日付を返します。「Z」または他のタイムゾーン仕様を追加するものもあれば、時間があるものもあります。System.DateTime.Parseを使用するようにMonoにパッチを適用することもできますが、これだけのためにカスタムのMonoビルドを使用する必要があるのは面倒です。

于 2012-05-03T06:49:41.040 に答える
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 に答える