Я использую WCF WebInvokeAttribute
для декларативных запросов JSON (DataContractJsonSerializer
) с сериализацией на основе DataContractAttribute
/DataMemberAttribute
.
Я использую службу, которая поддерживает возврат JSON, содержащего данные, основанные на разных культурах. По умолчанию эта служба использует настройки культуры en-US, что означает, что разделителем десятичных знаков будет «.».
У меня есть класс со свойством System.Double
. Если я запрашиваю данные, используя культуру, которая использует "," в качестве десятичного разделителя, я получаю SerializationException
при попытке десериализовать значение для этого свойства при разборе System.Double
:
«Произошла ошибка при десериализации объекта типа XXX. Значение «1,6276» не может быть проанализировано как тип «двойной».
Это, безусловно, связано с тем, что при разборе Double используется инвариантный язык и региональные параметры. Я надеялся, что установка правильной культуры в текущем потоке исправит это, но этого не произошло.
Таким образом, службы будут ломаться для любых культур, которые не используют "." как десятичный разделитель.
Будем признательны за помощь.
Спасибо!