我这里有一个非常奇怪的WCF问题......
我们正在连接糟糕的第三方网络服务;这是一个噩梦甚至让它继续下去,我们不得不创建一个自定义的WCF绑定,因为那些人决定使用“ISO-8859-1”作为他们的文本编码(而不是像网络上的其他人一样使用UTF-8),以及其他设置也很混乱 - 当然没有任何记录......
它现在已经工作了一段时间,但突然之间,我们的一些数据又重新出现了。我们希望能够找到地方的名字,并且在瑞士,其中一些有德国变形金刚。但在过去的两三个月里,我们突然回来了
Hünibach
而不是正确的
Hünibach
所以ü(你的变音符号)被破坏了。
没问题,我认为他们最终切换到UTF-8,我改变了我的自定义绑定,使用UTF-8作为文本编码器而不是ISO-8859-1 - 但没有运气 - 没有我得到:< / p>
EXCEPTION:System.ServiceModel.Security.MessageSecurityException
客户端身份验证方案“基本”禁止HTTP请求。
f ?????该服务受用户名/密码的保护,我们使用WCF的ClientCredentials
传入该用户名/密码。似乎改变文本编码会以某种方式弄乱凭证!?!?!怪异.....
好的 - 回到ISO-8859-1,我只是试图将响应有效载荷解释为UTF-8 - 再次没有运气:-(尝试使用UTF-16,UTF-32,UTF-7甚至,Unicode, BigEndianUnicode - 一切都无济于事。
那么我怎么能找回我的正确的变形虫,仍然可以称之为血腥的服务......在SoapUI中工作得很好,顺便说一下......
任何想法?我拼命地抓住你可能扔给我的任何吸管!!
答案 0 :(得分:1)
尝试检查您要回来的数据,看看他们用来代表它的数字代码。变音符号是8859-1中与其他角色共享代码的其中一个字符。
答案 1 :(得分:1)
实际上,我终于找出了问题所在。
出于某种原因,更改样本CustomTextEncoder
(由Microsoft在WCF和WF样本中提供)以使用UTF-8而不是ISO-8859-1 不起作用
另一方面,从我的自定义绑定中删除自定义文本编码器,只使用WCF从get go(默认情况下使用UTF-8)提供的标准TextMessageEncoder
确实有效< /强>
不要问我为什么......那只是我发现的事实......