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