Archive for the ‘WCF’ Category

Microsoft kann Base64 nicht dekodieren: News at 11!

17:28

Arthur hat einen wirklich bösen Bug in Microsofts streaming Base64 Dekodierer der WCF gefunden: Connect Bug#541494

In Kürze: Wenn die WCF eine Nachricht mit einer kruden Länge (ungleich 16+n*3 Bytes, mit int n>=0) verarbeitet und der Empfänger das letzte Byte einzeln (also mit einem Stream.ReadByte or Stream.ReadBoolean) liest, kommt eine System.IO.EndOfStreamException “Unable to read beyond the end of the stream.” aus den Untiefen der WCF geflogen. Nach Durchsicht des .NET BCL Sourcen, Reflectors Disassembly der restilichen beteiligten Klassen und der komischen Längenabhängigkeit gehen wir davon aus, dass der Bas64 Dekodierer beim Auslesen der letzten Bytes irgendwas falsch macht und explodiert.

Als einfache Umgehung dieses Bug füllen wir das Ende der Nachricht mit ein paar Leerbytes auf, die wir nicht auslesen. Dadurch vermeiden wir das Ende des Streams zu lesen.

Da MS Connect das herunterladen des Demo Projekts nicht erlaubt, hier eine lokale Kopie.

HTTP could not register URL http://+:666/ – Juhu!

19:16

Wer einen WCF Server mit HTTP Binding betreiben will, muss diesen zuerst beim OS freischalten lassen. Der untere Artikel zeigt, wie das geht:

http://blogs.msdn.com/amitlale/archive/2007/01/29/addressaccessdeniedexception-cause-and-solution.aspx

netsh http add urlacl url=http://+:666/ user=DOMAIN\UserName