Domanda

Ho uno strano problema WCF qui ...

Ci stiamo collegando a un servizio Web di terze parti scadente; È stato un incubo persino per farlo andare avanti, abbiamo dovuto creare un rilegatura WCF personalizzato poiché quei ragazzi hanno deciso di usare "ISO-8859-1" come codifica del loro testo (anziché UTF-8 come tutti gli altri sul web) e Anche le altre impostazioni erano disordinate - e non documentate da nessuna parte, ovviamente ...

Funziona bene da un po 'di tempo, ma all'improvviso alcuni dei nostri dati che tornano nel mangel. Ci aspettiamo di recuperare i nomi dei luoghi e di essere in Svizzera, alcuni di questi hanno Umlaut tedeschi. Ma negli ultimi due o tre mesi, improvvisamente torniamo

Hünibach

Invece del giusto

Hünibach

Quindi il ü (u umlaut) è mangellato.

Nessun problema, ho pensato che fossero finalmente passati a UTF-8 e ho cambiato il mio legame personalizzato per utilizzare UTF-8 come codificatore di testo anziché ISO-8859-1-ma niente fortuna-no sto ottenendo:

Eccezione: System.ServiceModel.security.MessagesChifrifurityException
La richiesta HTTP era vietata con lo schema di autenticazione del client "Basic".

Che F ????? Il servizio è protetto da un nome utente/password che trasmettiamo utilizzando il ClientCredentials di Wcf. Sembra che cambiare la codifica del testo in qualche modo incasina le credenziali!?!?! Strano.....

OK-Torna a ISO-8859-1, e ho appena provato a interpretare il payload di risposta come UTF-8-Ancora una volta senza fortuna :-( Provato con UTF-16, UTF-32, UTF-7 Even, Unicode, BigendianUnicode-tutti inutilmente.

Allora come diavolo riesco a recuperare le mie vere Umlauts, ed essere ancora in grado di chiamare quel servizio sanguinoso ... funziona bene in Soapui, a proposito .....

Qualche idea?? Sto afferrando disperatamente qualsiasi cannuccia che potresti lanciarmi !!

È stato utile?

Soluzione

Prova a ispezionare i dati che stai tornando e vedi quali codici numerici stanno usando per rappresentarli. Umlaut è uno di quei personaggi in 8859-1 che condivide il codice con altri caratteri.

Vedi il secondo par in - http://en.wikipedia.org/wiki/%C3%9C#Typografia

Altri suggerimenti

In realtà, ho finalmente capito quale fosse il problema.

Per qualche motivo, cambiando il campione CustomTextEncoder (fornito da Microsoft nei campioni WCF e WF) per utilizzare UTF-8 anziché ISO-8859-1 non funziona.

D'altra parte, strappare l'encoder di testo personalizzato dal mio rilegatura personalizzata e semplicemente utilizzando lo standard TextMessageEncoder che WCF fornisce da Get GO (che utilizza UTF-8 per impostazione predefinita) ha funzionato.

Non chiedermi perché .... questi sono solo i fatti che ho trovato ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top