Pregunta

Tengo un problema WCF realmente extraño aquí ...

Nos estamos conectando a un servicio web de terceros horrible; Fue una pesadilla incluso hacerlo en marcha, tuvimos que crear una vinculación de WCF personalizada ya que esos tipos decidieron usar "ISO-8859-1" como su codificación de texto (en lugar de UTF-8 como todos los demás en la web), y La otra configuración también estaba desordenada, y no se documentaron en ningún lado, por supuesto ...

Ha estado funcionando bien por un tiempo, pero de repente, algunos de nuestros datos volvieron destrozados. Esperamos recuperar los nombres de los lugares y al estar en Suiza, algunos de ellos tienen umlauts alemanes en ellos. Pero durante los últimos dos o tres meses, de repente regresamos

Hünibach

en lugar del apropiado

Hünibach

Entonces el ü (u Umlaut) está destrozado.

No hay problema, pensé que finalmente cambiaron a UTF-8, y cambié mi encuadernación personalizada para usar UTF-8 como su codificador de texto en lugar de ISO-8859-1, pero no hay suerte, no estoy obteniendo:

Excepción: System.ServiceModel.Security.MessageSecurityException
La solicitud HTTP estaba prohibida con el esquema de autenticación del cliente 'Básico'.

¿Qué f ????? El servicio está protegido por un nombre de usuario/contraseña que pasamos usando el ClientCredentials de WCF. ¡Parece que cambiar la codificación del texto de alguna manera arruina las credenciales!?!?! Extraño.....

OK-Volver a ISO-8859-1, y solo intenté interpretar la carga útil de respuesta como UTF-8-Nuevamente sin suerte :-( Probado con UTF-16, UTF-32, UTF-7 incluso, Unicode, BigendianUnicode-Todos en vano.

Entonces, ¿cómo demonios recupero mis umlauts apropiados y aún puedo llamar a ese servicio sangriento ... funciona bien en SoapUi, por cierto .....

¿¿Algunas ideas?? ¡Me estoy comprendiendo desesperadamente cualquier pajita que puedas lanzarme!

¿Fue útil?

Solución

Intente inspeccionar los datos que está recuperando y vea qué códigos numéricos están utilizando para representarlos. Umlaut es uno de esos personajes en 8859-1 que comparte código con otros caracteres.

Ver segundo para en - http://en.wikipedia.org/wiki/%C3%9C#Typography

Otros consejos

En realidad, finalmente descubrí cuál era el problema.

Por alguna razón, cambiar la muestra CustomTextEncoder (proporcionado por Microsoft en las muestras de WCF y WF) para usar UTF-8 en lugar de ISO-8859-1 no funciona.

Por otro lado, arrancando el codificador de texto personalizado de mi encuadernación personalizada y solo usando el estándar TextMessageEncoder que WCF proporciona desde el GO GO (que usa UTF-8 de forma predeterminada) funcionó.

No me preguntes por qué ... esos son solo los hechos que encontré .....

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top