Frage

Ich habe hier ein wirklich seltsames WCF -Problem ...

Wir verbinden uns mit einem beschissenen Webdienst von Drittanbietern. Es war ein Albtraum, es überhaupt in Gang zu bringen, wir mussten eine benutzerdefinierte WCF-Bindung erstellen, da diese Jungs beschlossen, "ISO-8859-1" als ihre Textcodierung zu verwenden (anstelle von UTF-8 wie alle anderen im Internet) und) und) und) und) und wie alle anderen) und) und anstelle von UTF-8) und) und) und) und) und) und ihre Textkodierung verwenden und wie alle anderen) und) und) und) und ihre Textkodierung verwenden) und) und ihre Textkodierung verwenden und wie alle anderen) und ihre Textkodierung verwenden und wie alle anderen) und ihre Textkodierung verwenden und wie alle anderen) und ihre Textkodierung verwenden, und wie sie wie alle anderen) und ihre Textkodierung verwenden, und sie) und wie dies alle anderen) und ihre Textkodierung zu verwenden, und dies zu verwenden, und wie alle anderen) und ihre Textkodierung zu verwenden) und die Die anderen Einstellungen waren auch chaotisch - und natürlich nirgendwo dokumentiert ...

Es funktioniert schon seit einiger Zeit in Ordnung, aber plötzlich kamen einige unserer Daten wieder auf. Wir erwarten, dass wir wieder Namen von Orten bekommen und in der Schweiz sind, einige davon haben deutsche Umlauts in sich. Aber in den letzten zwei oder drei Monaten kommen wir plötzlich zurück

Hünibach

statt der richtigen

Hünibach

Also ist der ü (u umlaut) verstümmelt.

Kein Problem, ich dachte, sie wechselten schließlich zu UTF-8, und ich habe meine benutzerdefinierte Bindung geändert, um UTF-8 als Textcodierer anstelle von ISO-8859-1 zu verwenden-aber kein Glück-nein, ich bekomme:

Ausnahme: System.Servicemodel.security.MessageSecurityException
Die HTTP -Anfrage war mit dem Client -Authentifizierungsschema 'Basic' verboten.

Was zum Teufel ????? Der Dienst wird durch einen Benutzernamen/ein Passwort geschützt, das wir in der Verwendung der übergeben ClientCredentials von WCF. Es scheint, dass das Ändern der Textkodierung die Anmeldeinformationen irgendwie durcheinander bringt!?!?! Seltsam.....

OK-Zurück zu ISO-8859-1, und ich habe gerade versucht, die Antwortnutzlast als UTF-8 zu interpretieren-wieder kein Glück :-( versucht mit UTF-16, UTF-32, UTF-7 sogar, Unicode, Bigendianunicode-All umsonst.

Wie um alles in der Welt bekomme ich meine richtigen Umlauts zurück und kann diesen blutigen Service immer noch nennen ... funktioniert in Soapui gut, übrigens .....

Irgendwelche Ideen?? Ich greife verzweifelt über Strohhalme, die du mich werfen könntest !!

War es hilfreich?

Lösung

Versuchen Sie, die Daten zu inspizieren, die Sie zurückholen, und sehen Sie, welche numerischen Codes sie verwenden, um sie darzustellen. Umlaut ist eines dieser Zeichen 8859-1, das Code mit anderen Zeichen teilt.

Siehe Zweiter Abs. In - http://en.wikipedia.org/wiki/%c3%9c#typography

Andere Tipps

Eigentlich habe ich endlich herausgefunden, was das Problem war.

Aus irgendeinem Grund ändern Sie die Probe CustomTextEncoder (Bereitstellung von Microsoft in den WCF & WF-Samples) zur Verwendung von UTF-8 anstelle von ISO-8859-1 funktioniert nicht.

Auf der anderen Seite riss den benutzerdefinierten Textcodierer aus meiner benutzerdefinierten Bindung und nur mit dem Standard an TextMessageEncoder Dass WCF von GET Go (das standardmäßig UTF-8 verwendet) bereitstellt funktionierte.

Fragen Sie mich nicht warum ... das sind nur die Fakten, die ich gefunden habe .....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top