Моя проблема похожа на этот вопрос, но не совсем так: Изменение культуры при десериализации службы WCF
Я создал WCF (веб-службу), работающую в Windows 7 (IIS 7.5) с использованием VS 2008. Одно из свойств моего веб-сервиса имеет тип System.Double. При создании собственного клиента для тестирования службы Visual Studio запрашивает у меня, например, написать число, например 123,4 (с использованием точки в качестве десятичной точки). Но при использовании WcfTestClient.exe для доступа к службе и ввода числа в поле (например, 123.4, все еще используя точку), я получаю сообщение «123.4 - недопустимое значение для этого типа». Я должен упомянуть, что я живу в Швеции, а запятая - это символ десятичной точки, специфичный для данной культуры.
Если вместо использования WcfTestClient я использую запятую (,) в качестве десятичной точки, это принимается. Проблема заключается в том, что когда я отлаживаю свой код веб-сервиса, я вижу, что процесс сериализации каким-то образом удаляет запятую, а число изменяется на 1234. Не хорошо.
В моей среде разработки у меня и служба, и клиент работают на одной машине. Веб-сервис работает под учетной записью NetworkService, которая использует ту же локаль.
Мой вопрос: как мне в WCF убедиться, что любой номер, указанный в этом поле / свойстве для веб-службы, если он содержит запятую, НЕ должен быть удален через запятую?
Я думал, что это автоматически обрабатывается в рамках. Меня не волнует, хранится ли число с запятой или точкой, если значение остается неизменным.
Я использую DataContractSerializer и автоматически реализуемые свойства, например: [DataMember] public double Price { get; set; }
Я также протестировал создание свойства с использованием Convert.ToDouble(value, System.Globalization.CultureInfo.InvariantCulture)
в установщике без видимых изменений в результате в службе WCF.