У нас есть некоторые проблемы с сервисом WCF SOAP, который мы публикуем и используем одним из наших клиентов. Проблема заключается в том, что клиент делает запросы SOAP в кодировке ISO-8859-1, что приводит к сообщению об ошибке:
HTTP / 1.1 415 Не удалось обработать сообщение, поскольку тип содержимого 'text / xml; charset = iso-8859-1' не был ожидаемым типом 'text / xml; кодировка = UTF-8' .
По-видимому, WCF поддерживает только UTF-8 и UTF-16 с прямым порядком байтов, согласно http://msdn.microsoft.com/en-us/library/ms751486(v=VS.90).aspx. Проблема также обсуждается в этих вопросах по SO:
Хотя я согласен с тем, что Юникод предпочтительнее, я не в состоянии заставить нашего клиента сменить клиента, поэтому мне придется исправить наш сервис.
Меня беспокоит, что мне нужно вложить> 150 строк кода, написанного каким-то автором MSDN, в мой проект - я не могу поддерживать этот код или брать на себя ответственность за него. Я также потратил довольно много времени на поиск решений в Google и попытался понять их, что, по моему мнению, является пустой тратой времени на то, что может быть обработано из коробки WCF.
Мой вопрос таков: есть ли у Microsoft веская причина для реализации WCF таким образом? Есть ли техническая причина, по которой SOAP не следует использовать ISO-8859-1? Мне кажется, это нарушает закон Постела, отвергая сообщения, которые действительно могут обрабатываться практически любым XML-анализатором.