2012-01-20 5 views
2

우리는 우리가 게시 한 WCF SOAP 서비스에 몇 가지 문제가 있으며 고객 중 한 명이 사용합니다. 문제는 고객이 ISO-8859-1로 인코딩 된 SOAP 요청을 작성하여 다음과 같은 오류 메시지가 나타나는 것입니다.WCF가 기본적으로 UTF-8 및 UTF-16 이외의 다른 인코딩을 지원하지 않는 이유는 무엇입니까?

HTTP/1.1 415 콘텐츠 유형 'text/xml; charset = iso -8859-1 '이 (가) 예상 된 유형'text/xml이 아니 었습니다. charset = utf-8 '.

분명히 WCF는 http://msdn.microsoft.com/en-us/library/ms751486(v=VS.90).aspx에 따라 UTF-8 및 UTF-16 빅 엔디안 만 지원합니다. 문제는 SO에 이러한 질문에 설명되어 있습니다 :

내가 유니 코드가 바람직 동의하는 동안, 나는 아니에요 위치의 변화에 ​​우리의 고객을 강제로 자신의 고객, 그래서 우리의 서비스를 수정해야합니다.

일부 MSDN 작성자가 작성한 코드의 150 줄을 내 프로젝트에 넣어야하는 버그가 있습니다. 코드를 유지 관리하거나 책임을 질 수 없습니다. 또한 Google에 솔루션을 위해 상당한 시간을 보냈으며이를 이해하려고 노력했습니다. WCF가 상자에서 처리 할 수있는 시간 낭비라고 생각합니다.

제 질문은 : Microsoft가 WCF를이 방법으로 구현하는 데는 어떤 이유가 있습니까? SOAP에서 ISO-8859-1을 사용하지 않아야하는 기술적 인 이유가 있습니까? 나에게 이것은 Postels의 법칙을 깨뜨리는 것으로 보인다. 거의 모든 XML 파서가 실제로 처리 할 수있는 메시지를 거부한다.

답변

2

명백하게, 이는 4.2 절 참조 SOAP 1.2 명세서에서 허용 다음 XML 정보 세트의 XML 직렬화를 사용하는 경우

이 결합은, 특정 문자 인코딩하거나 인코딩 설정 를 의무화 수도있을 익숙한.

이 경우 WCF는 다른 인코딩이 아닌 UTF-8 및 UTF-16 만 지원하도록 선택합니다.

0

한 가지 해결 방법은 here과 같이 HttpWebRequest 클래스를 사용하여 "이전"방식으로 서비스를 사용합니다. 요청 및 기타 멋진 것들을 만들기 위해 순수 Xml을 처리해야하지만 잘 작동합니다!