У меня действительно странная проблема с WCF ...
Мы подключаемся к дрянному стороннему веб-сервису; это даже было кошмаром, нам пришлось создать собственную привязку WCF, так как эти ребята решили использовать в качестве кодировки текста «ISO-8859-1» (вместо UTF-8, как все остальные в Интернете), и другие настройки тоже были грязными - и нигде не документированы, конечно ...
Некоторое время он работал нормально, но неожиданно некоторые наши данные возвращаются в искаженном виде. Мы ожидаем вернуть названия мест, и, будучи в Швейцарии, в некоторых из них есть немецкие умлауты. Но за последние два или три месяца мы внезапно возвращаемся
Hünibach
вместо правильного
Hünibach
Итак, ü (умля) искажен.
Нет проблем, я подумал, что они наконец-то переключились на UTF-8, и я изменил свое пользовательское связывание, чтобы использовать UTF-8 в качестве кодировщика текста вместо ISO-8859-1 - но не повезло - нет, я получаю:
ИСКЛЮЧЕНИЕ: System.ServiceModel.Security.MessageSecurityException
HTTP-запрос был запрещен с помощью схемы аутентификации клиента «Basic».
Что за ????? Служба защищена именем пользователя / паролем, которые мы передаем, используя ClientCredentials
WCF. Кажется, что изменение кодировки текста как-то портит учетные данные!?!?! Weird .....
ОК - вернемся к ISO-8859-1, и я просто попытался интерпретировать полезную нагрузку ответа как UTF-8 - опять не повезло :-( Пробовал с UTF-16, UTF-32, даже UTF-7, Unicode, BigEndianUnicode - все безрезультатно.
Так как же я могу вернуть себе надлежащие умлауты и все еще быть в состоянии вызвать этот кровавый сервис ... прекрасно работает в SoapUI, кстати .....
Есть идеи? Я отчаянно цепляюсь за любую соломинку, которую ты можешь бросить мне !!