Проблема десериализации XML веб-сервиса: ошибка преобразования двойного числа в десятичное для больших чиселC#

Место общения программистов C#
Ответить
Anonymous
 Проблема десериализации XML веб-сервиса: ошибка преобразования двойного числа в десятичное для больших чисел

Сообщение Anonymous »

В настоящее время я столкнулся с проблемой с веб-службой. Серверное поле «MinumOrderAmount» имеет тип double, и в моей принимающей программе я определил его как десятичное. Когда сервер отправляет значение 9999999999 для МинимумОрдерАмаунт, моя программа выдает ошибку со следующим сообщением:

Код: Выделить всё

Exception thrown passed to this Web service: System.InvalidOperationException: There is an error in XML document (1, 3998). ---> System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseDecimal(String value, NumberStyles options, NumberFormatInfo numfmt) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAvailabilityService.Read13_VoucherDiscount(Boolean isNullable, Boolean checkType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAvailabilityService.Read90_RoomRate(Boolean isNullable, Boolean checkType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAvailabilityService.Read141_RoomStay(Boolean isNullable, Boolean checkType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAvailabilityService.Read142_AvailResponseSegment(Boolean isNullable, Boolean checkType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAvailabilityService.Read143_AvailabilityResponse(Boolean isNullable, Boolean checkType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAvailabilityService.Read191_AvailabilityResponse() at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
Теоретически двойной тип можно напрямую преобразовать в десятичный тип. Почему это преобразование завершается неудачно, если значение равно 9999999999, но завершается успешно, если значение равно 999999999 (9 цифр)?
Когда я столкнулся с этой проблемой, я попытался изменить тип данных поля МинимумОрдерАмаунт. на стороне сервера от двойного к десятичному. После внесения этого изменения мне удалось правильно получить значение, даже если его длина превышала 10 цифр.

Подробнее здесь: https://stackoverflow.com/questions/787 ... or-for-lar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»