【发布时间】:2012-02-14 20:58:03
【问题描述】:
我们发布的 WCF SOAP 服务存在一些问题,并被我们的一位客户使用。问题是客户发出编码为 ISO-8859-1 的 SOAP 请求,这会导致错误消息:
HTTP/1.1 415 无法处理消息,因为内容类型 'text/xml;charset=iso-8859-1' 不是预期的类型 'text/xml; charset=utf-8'。
显然,WCF 仅支持 UTF-8 和 UTF-16 大端,根据http://msdn.microsoft.com/en-us/library/ms751486(v=VS.90).aspx。在关于 SO 的这些问题中也讨论了这个问题:
- Calling a webservice that uses ISO-8859-1 encoding from WCF
- WCF Exception: Text Message Encoding and ISO-8859-1 Encoding
虽然我同意首选 unicode,但我不能强迫我们的客户改变他们的客户,所以我必须修复我们的服务。
我需要将一些 MSDN 作者编写的超过 150 行代码放入我的项目中,这让我很烦恼——我无法维护该代码或对此负责。我也花了相当长的时间在谷歌上寻找解决方案并尝试理解它们,我觉得这对于 WCF 可以开箱即用的东西来说是浪费时间。
我的问题是:Microsoft 是否有充分的理由以这种方式实施 WCF? SOAP 不应使用 ISO-8859-1 是否有技术原因?对我来说,这似乎违反了 Postel 定律,拒绝了几乎所有 XML 解析器都可以真正处理的消息。
【问题讨论】:
标签: wcf soap encoding iso-8859-1