선언적 JSON 요청 (DataContractJsonSerializer
)에 WCF WebInvokeAttribute
, DataContractAttribute
/DataMemberAttribute
기반 직렬화에 을 사용하고 있습니다.WebInvoke/DataContractJsonSerializer, '1,6276'을 'double'로 구문 분석 할 수 없습니다.
다른 culture를 기반으로하는 데이터가 포함 된 JSON 반환을 지원하는 서비스를 사용하고 있습니다. 기본적으로이 서비스는 en-US culture 설정을 사용합니다. 즉, 소수 구분 기호는 "."입니다.
System.Double
속성을 가진 클래스가 있습니다. ","소수 구분 기호로 사용하는 문화권을 사용하여 데이터를 요청할 경우 System.Double
을 구문 분석 할 때이 속성의 값을 역 직렬화하려고 시도하는 동안 SerializationException
이 나타납니다.
"개체를 deserialize하는 동안 오류가 발생했습니다. 값 '1,6276'은 'double'유형으로 구문 분석 할 수 없습니다. "
이것은 Double을 구문 분석하는 동안 불변의 문화가 사용되기 때문입니다. 현재 스레드에서 올바른 문화권을 설정하면이 문제를 해결할 수 있기를 기대했지만 그렇지 않았습니다.
따라서 "."을 사용하지 않는 문화권에서는 서비스가 중단됩니다. 소수점 구분 기호로 사용됩니다.
도움을 주셔서 감사합니다.
고마워!
문화가 서비스의 요소 인 이유와 이것이 다른 서비스와 다른 점을 조금 더 잘 설명해주십시오. 이전에이 문제에 대해 들어 본 적이있을 것입니다. –
다음은 서비스 클라이언트입니다. http://www.codeproject.com/KB/WCF/GeoNames-WCFClient.aspx 이 구성 요소의 사용자는 처음에이 버그를 발견했습니다. 맨 아래에있는 Derserialization Error 스레드를 읽으십시오. 감사 – baretta