2010-12-22 3 views
2

Ich verwende die integrierte SOAP-Unterstützung in .NET durch eine Wrapper-Klasse von Visual Studio aus einer WSDL generiert.
Wenn ich jetzt eine der Methoden auf dem Wrapper aufrufen und ein Objekt übergeben, das eine Zeichenfolge mit CRLF (\r\n) enthält, wird nur das LF (\n) auf dem Server enden. Das Gleiche passiert umgekehrt. Wenn der Server eine Zeichenfolge sendet, die CRLF enthält, spuckt der Wrapper nur den LF aus.So verhindern Sie. NET SOAP-Serialisierung von Essen NewLines

Ich weiß, das ist ein Problem, das in der Regel durch die Bereitstellung einer eigenen XmlWriter an die XmlSerializer vermieden werden kann, aber ich kann keinen Ort finden, wo ich so etwas in dem bereitgestellten Framework angeben könnte.

Ich möchte fast mit der RegEx-Lösung in this thread geliefert werden, aber ich habe eine harte Zeit zu glauben, dass nichts vorhanden ist, um dieses Problem zu verhindern.

Antwort

2

Nur der Vollständigkeit halber habe ich keine Lösung gefunden, die das bietet, wonach ich gesucht habe. Die beste Lösung für meinen Fall war also die Lösung, die in this answer vorgeschlagen wurde.

0

Entnommen here

XmlWriterSettings ws = new XmlWriterSettings(); 
    ws.NewLineHandling = NewLineHandling.Entitize; 

    XmlSerializer ser = new XmlSerializer(typeof(Abc)); 
    using (XmlWriter wr = XmlWriter.Create("abc.xml", ws)) 
    { 
     ser.Serialize(wr, s); 
    } 
+0

Ich kenne die Lösung für die generische XML-Serialisierung. Aber in diesem Fall bin ich nicht derjenige, der die Serialisierung durchführt. Es passiert im .Net Framework. Daher sehe ich keinen Ort, wo ich benutzerdefinierte XmlWriterSettings liefern könnte. –

0

Verwenden a SoapExtension der Schlitten kehrt in den Strom zu dem Dienst (SoapMessageStage.AfterSerialize) geleitet zu entkommen.

This answer Punkte zu einer guten Ressource zu erklären how to implement one on v1.1 der SOAP Zeug; andere Beispiele sind jene, die ProcessMessage zu remove invalid XML characters oder log the entire SOAP conversation überschreiben. (Bei der Konfiguration handelt es sich um eine SoapExtensionAttribute Verknüpfung der Erweiterung mit der Webreferenz, normalerweise in der Datei web.config.)