4

私はここで本当に奇妙なWCFの問題を抱えています...

安っぽいサードパーティのWebサービスに接続しています。それを実現するのは悪夢でした。テキストエンコーディングとして「ISO-8859-1」を使用することにしたので、カスタムWCFバインディングを作成する必要がありました(Web上の他のすべての人のようにUTF-8ではありません)。他の設定も乱雑でした-もちろん、どこにも文書化されていません...

しばらくの間は問題なく動作していましたが、突然、戻ってきたデータの一部が壊れてしまいました。私たちは場所の名前を取り戻すことを期待しています、そしてスイスにいるので、それらのいくつかはそれらの中にドイツのウムラウトを持っています。しかし、過去2、3か月の間、私たちは突然戻ってきました

Hünibach

適切な代わりに

Hünibach

したがって、ü(u umlaut)は壊れています。

問題ありません。最終的にUTF-8に切り替えられたので、カスタムバインディングを変更して、ISO-8859-1の代わりにテキストエンコーダーとしてUTF-8を使用するようにしました。

例外:System.ServiceModel.Security.MessageSecurityException
HTTP要求は、クライアント認証スキーム「基本」で禁止されていました。

何のf????? ClientCredentialsこのサービスは、WCFを使用して渡すユーザー名/パスワードによって保護されています。テキストエンコーディングを変更すると、どういうわけかクレデンシャルが台無しになっているようです!?!?!変.....

OK-ISO-8859-1に戻り、応答ペイロードをUTF-8として解釈しようとしました-再び運がありません:-( UTF-16、UTF-32、UTF-7でも、Unicode、BigEndianUnicodeで試してみました-すべて無駄に。

では、一体どうやって適切なウムラウトを取り戻し、それでもその血まみれのサービスを呼び出すことができるのでしょうか... SoapUIでは問題なく機能します、ところで.....

何か案は??投げてくれるストローを必死に掴んでます!!

4

2 に答える 2

1

取得したデータを調べて、データを表すために使用している数値コードを確認してください。Umlautは、他の文字とコードを共有する8859-1の文字の1つです。

次の2番目のパラグラフを参照してください-http://en.wikipedia.org/wiki/%C3%9C#Typography

于 2011-03-23T23:52:41.783 に答える
1

実際、私はついに問題が何であるかを理解しました。

何らかの理由で、CustomTextEncoderISO-8859-1の代わりにUTF-8を使用するようにサンプル(MicrosoftがWCFおよびWFサンプルで提供)を変更しても機能しません

一方、カスタムバインディングからカスタムテキストエンコーダーをリッピングし、TextMessageEncoderWCFが最初から提供する標準(デフォルトではUTF-8を使用)を使用するだけで機能しました。

理由を聞かないでください....それは私が見つけた事実だけです.....

于 2011-04-12T17:30:42.247 に答える