4

我在这里有一个非常奇怪的 WCF 问题......

我们正在连接一个糟糕的第三方网络服务;这甚至是一场噩梦,我们不得不创建一个自定义 WCF 绑定,因为这些人决定使用“ISO-8859-1”作为他们的文本编码(而不是像网络上的其他人一样使用 UTF-8),并且其他设置也很混乱-当然,没有记录在任何地方...

它已经工作了一段时间了,但是突然间,我们的一些数据被破坏了。我们希望取回地名,并且在瑞士,其中一些地名中有德语变音符号。但是最近两三个月,我们突然回过神来

Hünibach

而不是正确的

Hünibach

所以 ü (u 变音符号)被破坏了。

没问题,我认为他们终于切换到了 UTF-8,并且我将自定义绑定更改为使用 UTF-8 作为其文本编码器而不是 ISO-8859-1 - 但运气不好 - 不,我得到了:

例外:System.ServiceModel.Security.MessageSecurityException
客户端身份验证方案“基本”禁止 HTTP 请求。

什么鬼??????该服务受我们使用ClientCredentialsWCF 传入的用户名/密码保护。似乎更改文本编码会以某种方式弄乱凭据!?!?!诡异的.....

好的 - 回到 ISO-8859-1,我只是试图将响应负载解释为 UTF-8 - 再次没有运气:-( 尝试使用 UTF-16、UTF-32、UTF-7 甚至 Unicode、BigEndianUnicode - 所有无济于事。

那么我到底如何才能找回我正确的变音符号,并且仍然能够调用该血腥的服务......在SoapUI中工作得很好,顺便说一句......

有任何想法吗??我拼命地抓住你可能扔给我的任何稻草!

4

2 回答 2

1

其实,我终于知道问题出在哪里了。

出于某种原因,将示例CustomTextEncoder(由 Microsoft 在 WCF 和 WF 示例中提供)更改为使用 UTF-8 而不是 ISO-8859-1不起作用

另一方面,从我的自定义绑定中删除自定义文本编码器并仅使用TextMessageEncoderWCF 从一开始就提供的标准(默认使用 UTF-8)确实有效

不要问我为什么......这只是我发现的事实......

于 2011-04-12T17:30:42.247 回答
1

试着检查你得到的数据,看看他们用什么数字代码来表示它。变音符号是 8859-1 中与其他字符共享代码的字符之一。

见第二段 - http://en.wikipedia.org/wiki/%C3%9C#Typography

于 2011-03-23T23:52:41.783 回答